触发器(Trigger)是 MySQL 中一个非常实用的功能,它可以在操作者对表进行「增删改」 之前(或之后)被触发,自动执行一段事先写好的 SQL 代码。
触发器的六种方式:
BEFORE INSERT
: 在插入数据前,检测插入数据是否符合业务逻辑,如不符合返回错误信息。AFTER INSERT
: 在表 A 创建新账户后,将创建成功信息自动写入表 B 中。BEFORE UPDATE
:在更新数据前,检测更新数据是否符合业务逻辑,如不符合返回错误信息。AFTER INSERT
:在更新数据后,将操作行为记录在 log 中BEFORE DELETE
:在删除数据前,检查是否有关联数据,如有,停止删除操作。AFTER DELETE
:删除表 A 信息后,自动删除表 B 中与表 A 相关联的信息。
1.创建触发器
在MySQL中创建触发器通过SQL语句CREATE TRIGGER来实现,其语法形式如下:
CREATE TRIGGER [触发器的名字]
[触发器执行时机] [触发器监测的对象]
ON [表名]
FOR EACH ROW [触发器主体代码]
注意:
不能创建具有相同名字的触发器。
对于具有相同触发程序动作时间和事件的给定表,不能有两个触发器(比如after insert插入之后有一个触发器那么就不能再有触发器是after的了,但是before insert是可以的)。
因此,在创建触发器之前,需要查看MySQL中是否已经存在该标识符的触发器和触发器的相关事件。
2.创建触发器包含多个执行语句
CREATE TRIGGER [触发器的名字]
[触发器执行时机] [触发器监测的对象]
ON [表名]
FOR EACH ROW
BEGIN
[触发器多条语句内容]
END;
比“只有一条执行语句的触发器”语法多出来两个关键字BEGIN和END,在这两个关键字之间是所要执行的多个执行语句的内容,执行语句之间用分号隔开。
在MySQL中,一般情况下用“;”符号作为语句的结束符号,可是在创建触发器时,需要用到“;”符号作为执行语句的结束符号。为了解决该问题,可以使用关键字DELIMITER语句。例如,"DELIMITER $'$"可以将结束符号设置成“$$”。
3.查看触发器
①SHOW TRIGGERS语句查看触发器
查看MySQL软件中已经存在的触发器。在MySQL软件中查看已经存在的触发器,通过SQL语句SHOW 语句来实现,其语法形式如下:
SHOW TRIGGERS ;
②查看系统表triggers实现查看触发器
在MySQL中,在系统数据库information_schema中存在一个存储所有触发器信息的系统表triggers,因此查询该表格的记录也可以实现查看触发器功能。系统表triggers的表结构
--选择数据库
use 数据库名;
select * from triggers;
--查询系统表triggers中的触发器
select * from triggers where trigger_name='tri_delete_student';
4.删除数据库
在MySQL中,删除触发器可以通过SQL语句DROP TRIGGER来实现,其语法形式如下:
DROP TRIGGER [触发器名];
参考博客:
版权声明:本文为优快云博主「霸道小明」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_54169998/article/details/122720159