在项目中好少使用
缺点显而易见:
(1)不够灵活。只能针对update,delete,insert等操作作为触发事件,不符合实际项目开发中根据参数灵活判断进行触发(除非你专门为了一些特定的模块数据去新增专门的update,delete,insert等操作表,但实际开发谁会这样做)。
(2)开销大,在begin … end 语句块中要执行的操作如果复杂,很容易就造成一定数据库压力。
(3)在新增和删除和更新操作频繁的数据库表,如果通过触发器来做业务逻辑的‘后续处理’,很难维护,而且触发器是针对行的加锁,会造成非常大的资源浪费。
优点就是它自带事务属性,要么全部执行成功,要么全部回滚,而且把相关的后续业务逻辑处理都放在一块,容易阅读理解。
例:
CREATE TRIGGER 触发器名 BEFORE 触发事件
ON 表名 FOR EACH ROW
BEGIN
执行业务逻辑SQL语句…
END;
关键字注解:
触发器名:一般用当前的表名加一点注释来命名。
BEFORE:在触发事件发生前先执行的操作。
触发事件:就是上面说的update,delete,insert三种,无法根据参数判断。
ON:在哪张表上建立该触发器。
FOR EACH ROW:对每一行都生效。
BEGIN:开始执行。
这中间可以加自己的业务语句…
比如 insert …
update…
delete …
END:结束。