创建触发器:create trigger 触发器名
after、before:在对表操作之前(before)或者之后(after)触发动作。
操作事件:insert,update,delete等修改操作
影响的范围:for each row
1、需求:出于审计目的,当有人往表users插入一条记录时,把插入的userid,username,插入动作和操作时间记录下来。
create trigger tr_users_insert after insert on users for each row begin insert into oplog(userid,username,action,optime) values(NEW.userid,NEW.name,'insert',now()); end;
2、需求:出于审计目的,当删除users表时,记录删除前该记录的主要字段值
create trigger tr_users_delete before delete on users for each row begin insert into oplog(userid,username,action,optime) values(OLD.id,OLD.name,'delete',now()); end;
九、事件
触发器只是针对某个表产生的事件执行一些语句,而事件调度器则是在某一个(间隔)时间执行一些语句。
在使用这个功能之前必须确保事件调度器event_scheduler已开启:
SET GLOBAL event_scheduler = 1; -- 或者 SET GLOBAL event_scheduler = on; --查看开启情况 show variables like '%event_scheduler%';
create event[IF NOT EXISTS]event_name -- 创建使用create event ON SCHEDULE schedule -- on schedule 什么时候来执行 [ON COMPLETION [NOT] PRESERVE] -- 调度计划执行完成后是否还保留 [ENABLE | DISABLE] -- 是否开启事件,默认开启 [COMMENT 'comment'] -- 事件的注释 DO sql_statement; -- 这个调度计划要做什么?
需求:设计一个福彩的开奖过程,每3分钟开奖一次
-- 存储过程 create procedure test() begin insert into lottery(num1,num2,num3,ctime) select FLOOR(rand()*9)+1,FLOOR(rand()*9)+1,FLOOR(rand()*9)+1,now(); end;
-- 事件 create event if not exists test_event -- 创建一个事件 on schedule every 3 minute -- on schedule 每三分钟执行一次 on completion preserve do call test; --调用存储过程
参考文章:mysql存储过程学习笔记
到此这篇关于Mysql存储过程、触发器、事件调度器使用入门的文章就介绍到这了,更多相关Mysql存储过程、触发器、事件调度器内容请搜索
更多相关Mysql内容来自木庄网络博客
标签:Mysql
相关阅读 >>
《阿里巴巴java开发手册》里面写超过三张表禁止join,这是为什么?
更多相关阅读请进入《mysql》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。