MySQL数据库 触发器(trigger)是一种特殊的存储过程,它在满足一定条件时被自动触发,常用于实现数据操作的自动化控制和数据唯一性的约束。
MySQL数据库 触发器(trigger)是一种特殊的存储过程,它在满足一定条件时被自动触发,常用于实现数据操作的自动化控制和数据唯一性的约束。
下面是MySQL数据库触发器的完整攻略:
触发器的创建
在MySQL中,我们可以通过CREATE TRIGGER语句来创建一个触发器。语法如下:
CREATE TRIGGER trigger_name
trigger_time trigger_event ON table_name FOR EACH ROW
BEGIN
-- 触发器主体部分,执行需要的动作
END;
其中,
trigger_name
:触发器名称,自定义命名,遵循“字母+数字+下划线”的命名规则。trigger_time
:触发时机,包括BEFORE和AFTER两种,表示在触发事件之前或之后执行触发器中的代码。trigger_event
:触发事件,包括INSERT、UPDATE和DELETE三种,表示在数据插入、更新或删除时执行触发器中的代码。table_name
:触发操作的目标表名。FOR EACH ROW
:表示对每一行数据执行触发器操作。BEGIN
和END
之间的语句:触发器主体部分,执行需要的动作。
一条示例说明:
针对student表,在数据删除前输出删除的数据信息:
CREATE TRIGGER student_delete_trigger
BEFORE DELETE ON student_tbl FOR EACH ROW
BEGIN
-- 输出删除信息
INSERT INTO student_log_tbl (sid, student_name, delete_time)
VALUES (OLD.sid, OLD.name, NOW());
END;
触发器的引用
在MySQL中,我们可以通过NEW和OLD关键字来引用插入、更新或删除操作中受影响的数据,分别表示新数据和旧数据。
- 使用NEW关键字,可以引用插入和更新操作中的新数据列。
- 使用OLD关键字,可以引用更新和删除操作中的旧数据列。
两条示例说明:
- 在student表中插入数据时,自动将学生姓名大写并插入到student_uppercase表中。
CREATE TRIGGER student_insert_trigger
AFTER INSERT ON student_tbl FOR EACH ROW
BEGIN
-- 将NAME大写并插入到另一张表中
INSERT INTO student_uppercase_tbl (name_upper) VALUES (UPPER(NEW.name));
END;
- 在student表中更新信息时,记录更新前后的姓名信息到student_log表中。
CREATE TRIGGER student_update_trigger
AFTER UPDATE ON student_tbl FOR EACH ROW
BEGIN
-- 记录更新前后的姓名信息
INSERT INTO student_log_tbl (sid, before_name, after_name, update_time)
VALUES (NEW.sid, OLD.name, NEW.name, NOW());
END;
触发器的修改和删除
在MySQL中,我们可以通过ALTER TRIGGER语句来修改一个已有的触发器,通过DROP TRIGGER语句来删除一个触发器。语法如下:
-- 修改触发器
ALTER TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW
BEGIN
-- 触发器主体部分,执行需要的动作
END;
-- 删除触发器
DROP TRIGGER IF EXISTS trigger_name;
以上是关于MySQL数据库 触发器(trigger)的完整攻略。
沃梦达教程
本文标题为:MySQL数据库 触发器 trigger
猜你喜欢
- redis集群删除所有数据 2023-09-12
- MySQL中MVCC机制的实现原理 2022-09-01
- SQL Server2019安装后出现连接失败的解决方法 2023-07-28
- SQL Optimizer 详细解析 2023-12-20
- Mysql limit 优化,百万至千万级快速分页 复合索引的引用并应用于轻量级框架 2023-12-20
- Mysql表连接的执行流程详解 2022-10-22
- SQL中去除重复数据的几种方法汇总(窗口函数对数据去重) 2023-07-29
- MySQL优化之表结构优化的5大建议(数据类型选择讲的很好) 2023-12-22
- Oracle查看逻辑读、物理读资源占用排行的SQL语句 2024-01-18
- 数据库表的查询操作实践演练(实验三) 2023-12-19