MySQL-触发器

一、概述:

Ⅰ、触发器是由 事件来触发 某个操作,这些事件包括 INSERT 、 UPDATE 、 DELETE 事件。就是指

用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生

了,就会 自动 激发触发器执行相应的操作。

Ⅱ、当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来

实现。

二、创建触发器

Ⅰ、语法

sql 复制代码
CREATE TRIGGER 触发器名称
{BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名
FOR EACH ROW
触发器执行的语句块;

Ⅱ、相关说明

​ ①表名:表示触发器监控的对象。

​ ②BEFORE|AFTER :表示触发的时间。BEFORE 表示在事件之前触发;AFTER 表示在事件之后触发。

​ ③INSERT|UPDATE|DELETE :表示触发的事件。

​ ·INSERT 表示插入记录时触发;

​ ·UPDATE 表示更新记录时触发;

​ ·DELETE 表示删除记录时触发;

Ⅲ、示例

sql 复制代码
#向test_trigger数据表插入数据之后,向test_trigger_log数据表中插入after_insert的日志信息。
DELIMITER //
CREATE TRIGGER before_insert
BEFORE INSERT ON test_trigger
FOR EACH ROW
BEGIN
INSERT INTO test_trigger_log (t_log)
VALUES('before_insert');
END //
DELIMITER ;

三、查看、删除触发器

Ⅰ、查看触发器

sql 复制代码
#方式1:查看当前数据库的所有触发器的定义
SHOW TRIGGERS;

#方式2:查看当前数据库中某个触发器的定义
SHOW CREATE TRIGGER 触发器名;

#方式3:从系统库information_schema的TRIGGERS表中查询"salary_check_trigger"触发器的信息。
SELECT * FROM information_schema.TRIGGERS;

Ⅱ、删除触发器

sql 复制代码
DROP TRIGGER IF EXISTS 触发器名称;

四、总结

Ⅰ、优点

​ ①触发器可以确保数据的完整性。

​ ②触发器可以帮助我们记录操作日志。

​ ③触发器还可以用在操作数据前,对数据进行合法性检查。

Ⅱ、弊端

​ ①可读性差:触发器存储在数据库中,并且由事件驱动,这就意味着触发器有可能 不受应用层的控制,维护难度大。

​ ②相关数据的变更,可能会导致触发器出错。

相关推荐
广州智造1 小时前
OptiStruct实例:3D实体转子分析
数据库·人工智能·算法·机器学习·数学建模·3d·性能优化
技术宝哥4 小时前
Redis(2):Redis + Lua为什么可以实现原子性
数据库·redis·lua
学地理的小胖砸5 小时前
【Python 操作 MySQL 数据库】
数据库·python·mysql
dddaidai1236 小时前
Redis解析
数据库·redis·缓存
数据库幼崽6 小时前
MySQL 8.0 OCP 1Z0-908 121-130题
数据库·mysql·ocp
Amctwd6 小时前
【SQL】如何在 SQL 中统计结构化字符串的特征频率
数据库·sql
betazhou7 小时前
基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL
linux·数据库·mysql·oracle·ogg
lyrhhhhhhhh7 小时前
Spring 框架 JDBC 模板技术详解
java·数据库·spring
喝醉的小喵8 小时前
【mysql】并发 Insert 的死锁问题 第二弹
数据库·后端·mysql·死锁
付出不多9 小时前
Linux——mysql主从复制与读写分离
数据库·mysql