触发器定义
触发器是由事件来触发某个操作,这些事件包括insert语句、update语句和delete语句。当数据库系统执行这些事件时,会激活触发器执行相应操作。
CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_stmt
trigger_name:触发器的名称
tirgger_time:触发时机,为BEFORE或者AFTER
trigger_event:触发事件,为INSERT、DELETE或者UPDATE
tb_name:表示建立触发器的表明,就是在哪张表上建立触发器
trigger_stmt:触发器的程序体,可以是一条SQL语句或者是用BEGIN和END包含的多条语句
所以可以说MySQL创建以下六种触发器:
BEFORE INSERT,BEFORE DELETE,BEFORE UPDATE
AFTER INSERT,AFTER DELETE,AFTER UPDATE
创建一条执行语句的触发器
mysql> create trigger tr
-> after insert
-> on user
-> for each row
-> insert into ulog(inTime) values(now());//
Query OK, 0 rows affected (0.06 sec)
测试触发器
mysql> select adduser(8,'Harry','789')// 这是一个自定义函数
创建多条执行语句的触发器
mysql> create trigger tr2
-> after delete
-> on user
-> for each row
-> begin
-> insert into ulog(inTime) values(now());
-> insert into ulog(inTime) values(now());
-> end
-> //
Query OK, 0 rows affected (0.08 sec)
测试
mysql> call removeUserById(4)// 这是一个存储过程