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-13
- MySQL之浅谈DDL和DML 2023-08-09
- 海量数据库的查询优化及分页算法方案集合1/2第1/2页 2024-01-02
- Oracle如何获取数据库系统的当前时间 2023-07-23
- MongoDB数据库权限管理详解 2023-07-16
- windows上下载redis扩展 2023-09-12
- Oracle数据库如何创建第一张表 2024-02-12
- Redis Desktop Manager(Redis可视化工具)安装及使用图文教程 2023-07-13
- mysql数据库优化需要遵守的原则 2023-12-06
- mysql数据库是做什么 2023-12-29