Mysql教程

9.3触发器的使用

在MySQL中,触发器执行的顺序是BEFORE触发器、表操作(INSERT、UPDATE和DELETE) 和AFTER触发器。下面通过一个示例演示这三者的执行顺序。

【示例9-6】下面在department表上创建BEFORE INSERT和AFTER INSERT这两个触发器。在向department表中插入数据时,观察这两个触发器的触发顺序。创建触发器的代码如下:

CREATE TRIGGER before_insert BEFORE INSERT ON department FOR EACH ROW INSERT INTO trigger_test VALUES(null, " before_insert");
CREATE TRIGGER after_insert AFTER INSERT ON department FOR EACH ROW INSERT INTO trigger_test VALUES(null,"after_insert");

触发器都创建好以后,向department表中插入一条记录。代码执行如下:

INSERT INTO department VALUES(1003,'销售部','负责产品销售','1号销售大厅');

执行结果显示,记录插入成功。现在可以查看trigger_test表中的记录。

查询结果显示,before_insert和after_insert触发器被激活。先激活before_insert触发器,然后再激活after_insert触发器。

在激活触发器时,对触发器中的执行语句存在一些限制。例如,触发器中不能包含START TRANSACTION, COMMITE或ROLLBACK等关键词,也不能包含CALL语句。

在触发器执行过程中,任何步骤出错都会阻止程序向下执行。但是对于普通表来说, 已经更新过的记录是不能回滚的。更新后的数据将继续保持在表中。因此,设计触发器时 要认真考虑。


关注微信获取最新动态