我是靠谱客的博主 清脆宝马,最近开发中收集的这篇文章主要介绍MySQL创建触发器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 当新的一行数据插入表中时触发,如执行insertload data,replace语句插入新数据
UPDATE 当表的一行数据被修改时触发,如执行update语句时
DELETE 当表的一行数据被删除时触发,如执行deletereplace语句时
当执行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创建触发器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部