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 触发器名称;

四、总结

Ⅰ、优点

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

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

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

Ⅱ、弊端

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

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

相关推荐
倔强的石头_27 分钟前
kingbase备份与恢复实战(六)—— 备份自动化与保留策略:Windows任务计划+日志追溯
数据库
轻刀快马1 小时前
别被 ORM 框架宠坏了:从一场“订单消失”悬案,看懂 MySQL 为什么要强推 InnoDB
数据库·mysql
后端漫漫3 小时前
Redis 客户端工具体系
数据库·redis·缓存
PaperData4 小时前
1988-2025年《中国人口和就业统计年鉴》全年份excel+PDF
数据库·人工智能·数据分析·经管
星河耀银海4 小时前
C语言与数据库交互:SQLite实战与数据持久化
c语言·数据库·sqlite·交互
过期动态5 小时前
MySQL中的约束
android·java·数据库·spring boot·mysql
程序员陆通5 小时前
月烧 400 刀到不到 20 刀:我是怎么把 OpenClaw 的 Token 账单砍掉 95% 的
java·前端·数据库
Shan12055 小时前
站在计算机领域视角看:SQL注入攻击
网络·数据库·sql
轻刀快马5 小时前
别干背八股文了:从一场“双十一秒杀”惨案,看懂 InnoDB 事务、锁与索引的底层齿轮
数据库·sql
万事大吉CC5 小时前
【1】Django 基础:MTV 架构与核心组件
数据库·架构·django