MYSQL之触发器(Trigger)操作

一、触发器(Trigger)定义

触发器(Trigger)是与表有关的数据库对象,是一种特殊的存储过程,在满足定义条件时触发,并执行触发器中定义的语句集合。

在MySQL中,触发器可以在你执行INSERT、UPDATE或DELETE的时候,执行一些特定的操作。在创建触发器时,可以指定是在执行SQL语句之前或是之后执行这些操作。通过触发器,你可以实现一些业务逻辑或一些数据限制,在简化应用程序逻辑,优化系统性能时非常有用。

二、触发器(Trigger)语法

创建触发器(Trigger)的基本语法如下:

CREATE TRIGGER <触发器名称>
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE } 
ON <表名称>
FOR EACH ROW
BEGIN
 <触发的SQL语句>
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;

发布于 2018-09-21 10:52