概述
1、创建触发器
- 触发器格式(中括号的内容可以不用加)
CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name
trigger_time trigger_event
ON tbl_name FOR EACH ROW
[trigger_order]
trigger_body
- 参数列表
trigger_time: { BEFORE | AFTER }
trigger_event: { INSERT | UPDATE | DELETE }
trigger_order: { FOLLOWS | PRECEDES } other_trigger_name
- 参数说明
trigger_name:触发器的名称,不能与已经存在的触发器重复;
trigger_time:{ BEFORE | AFTER },表示在事件之前或之后触发;
trigger_event::{ INSERT |UPDATE | DELETE },触发该触发器的具体事件;
tbl_name:该触发器作用在tbl_name上;
trigger_body: 触发器主题内容;
- 查询、删除触发器
1、DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name 删除触发器
if exists用来避免删除不存在的触发器时引发的报错
当你执行drop table时,表上的触发器也被drop掉了
2、查询触发器
SELECT * FROM information_schema.`TRIGGERS` 查询所有
select * from information_schema.triggers where TRIGGER_NAME='触发器名'; 查询一个
- 注意事项
Definer关键词用来指定trigger的安全环境;
trigger_time指定触发器的执行时间,BEFORE和AFTER指定触发器在表中的每行数据修改前或者后执行;
trigger_event指定触发该触发器的集体事件:
INSERT 当新的一行数据插入表中时触发,如执行insert,load data,replace语句插入新数据
UPDATE 当表的一行数据被修改时触发,如执行update语句时
DELETE 当表的一行数据被删除时触发,如执行delete,replace语句时
当执行insert into...on duplicate key update语句时,当碰到重复行执行update时,则触发update下的触发器;
从5.7.2版本开始,可以创建具有相同trigger_time和trigger_event的同一个表上的多个触发器,默认情况下,按照创建时间依次执行,通过指定FOLLOWS/PRECEDES改变执行顺序,即FOLLOWS时表示新创建的触发器执行,PRECEDES则表示新触发器先执行;
trigger_body 表示触发器触发之后要执行的一个或多个语句,在内部可以引用涉及表的字段,OLD.col_name表示行数据被修改或删除之前的字段数据,NEW.col_name表示数据被插入或修改之后的字段数据;
转载于:https://www.cnblogs.com/tongxiaoda/p/8031891.html
最后
以上就是清脆宝马为你收集整理的MySQL创建触发器的全部内容,希望文章能够帮你解决MySQL创建触发器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复