一、关于触发器
mysql从5.0.2版本开始支持触发器的功能。触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。
二、触发器相关操作
2.1 创建触发器
创建触发器的语法:
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW
trigger_stmt
通用语句:
CREATE TRIGGER 触发器名
after/before insert/update/delete on 表名
FOR EACH ROW #这一句在mysql中是固定的
BEGIN
sql语句;
END;
注意:触发器只能创建在永久表(permanent table)上,不能对临时表(temporary table)上创建触发器
其中trigger_time是触发器的触发时间,可以使BEFORE或者AFTER,BEFORE的含义指在检查约束前触发,而AFTER是在检查约束后触发。
而trigger_event 就是触发器的触发事件,可以是INSERT,UPDATE或者DELETE。
对同一个表相同触发事件的相同触发事件,只能定义一个触发器。例如,对某个表的不同字段的AFTER更新触发器,在使用oracle数据库的时候,可以定义成两个不同的UPDATE触发器,更新不同的字段是触发单独的触发器,但是在mysql数据库中,只能定义一个触发器,在触发器中通过判断更新的字段进行对应的处理。
使用别名OLD和NEW来引发触发器发生变化的记录内容,这与其他的数据库是相似的。现在触发器还支持行级触发,不支持语句级触发。
详细介绍可以参考博客: mysql之触发器trigger