一、触发器(Trigger)定义
触发器(Trigger)是与表有关的数据库对象,是一种特殊的存储过程,在满足定义条件时触发,并执行触发器中定义的语句集合。
在MySQL中,触发器可以在你执行INSERT、UPDATE或DELETE的时候,执行一些特定的操作。在创建触发器时,可以指定是在执行SQL语句之前或是之后执行这些操作。通过触发器,你可以实现一些业务逻辑或一些数据限制,在简化应用程序逻辑,优化系统性能时非常有用。
二、触发器(Trigger)语法
创建触发器(Trigger)的基本语法如下:
CREATE TRIGGER
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON
FOR EACH ROW
BEGIN
END;触发器名称 -- 触发器名字,最多64个字符,其命令规则和MySQL中其他对象的命名方式类似
{ BEFORE | AFTER } -- 触发器执行时间:可以设置为事件发生前或后
{ INSERT | UPDATE | DELETE } -- 触发事件:可以设置为在执行INSERT、UPDATE、DELETE操作时触发①INSERT型触发器:插入某一行时激活触发器,可能通过INSERT、LOAD DATA、REPLACE 语句触发(LOAD DAT语句用于将一个文件装入到一个数据表中,相当与一系列的INSERT操作);
②UPDATE型触发器:更改某一行时激活触发器,可能通过UPDATE语句触发;
③DELETE型触发器:删除某一行时激活触发器,可能通过DELETE、REPLACE语句触发。表名称 -- 触发器所属表:触发器属于某一个表,当在这个表上执行INSERT、UPDATE、DELETE操作的时就会使触发器触发,一张表的同一个事件只能有一个触发器
FOR EACH ROW -- 触发器的执行间隔:FOR EACH ROW子句通知触发器,每行执行一次动作
触发的SQL语句 -- 事件触发时所要执行的SQL语句
三、列出触发器(TRIGGERS)
可以从 sqlite_master 表中列出所有触发器,如下所示:
SELECT name FROM sqlite_master
WHERE type = 'trigger';
或者通过查看已创建触发器和查看数据库SHOW DATABASES、查看表SHOW TABLES一样。查看触发器的语法如下:
SHOW TRIGGERS [FROM schema_name];
四、删除触发器(TRIGGERS)
下面是 DROP 命令,可用于删除已有的触发器:
DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name;