数据库复习笔记11——MySQL触发器
MySQL触发器
例如在数据库中有两个表,一个用户信息表,一个账号表,账号表用来账号的注册,密码的修改等操作,信息表用来保存用户 的信息(姓名、年龄等);当账号在账号表中注册成功后,如何在用户表中同时添加用户的相关信息以保证数据的准确性和实时性呢?通常我们在注册成功时可以insert用户的信息到用户信息表中,但如果用户数量过多,SQL语句则过于繁琐,怎么办。这时我们就可以使用触发器。
什么是触发器
触发器(trigger)是一种特殊的存储过程,它可以在对一个表上进行INSERT、UPDATE和DELETE操作中的任一种或几种操作时被自动调用执行。它是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法。
当需要实现多个表的级联更改或实时监控表中字段的更改作出处理时就可以使用触发器来完成。
MySQL中都有哪些触发器
Before Insert、After Insert、Before Update、After Update、Before Delete、After Delete
触发器目前只支持行级触发,不支持语句级触发。
在触发器中,我们可以通过NEW关键字获取INSERT/UPDATE新增的数据;OLD关键字获取UPDATE/DELETE更新前或者删除前的数据。
触发器的使用
1、创建触发器
语法结构如下:
DELIMITER $
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE
ON table_name
FOR EACH ROW —— 表明是行级触发器
BEGIN
statement_list
END$
示例:我们想要记录表t1的插入日志,即如果在表t1中进行了插入操作,则把这次插入的信息记录到表t1_logs中,包括插入的ID,插入的时间,插入的内容等等。
(1)首先创建t1_logs表
(2)创建触发器
(3)在t1表中进行插入
(4)查看t1_logs表,触发器是否执行成功。
2、查看触发器
语法:SHOW TRIGGERS;
示例:
3、删除触发器
语法:DROP TRIGGER trigger_name;
示例:
参考资料
1、https://www.bilibili.com/video/BV1UQ4y1P7Xr?p=30
2、https://hillzhang1999.gitee.io/2020/05/29/shu-ju-ku-fu-xi-ji-yu-mysql/#toc-heading-125