触发器
触发器
- 什么是触发器?
触发器,就是一种特殊的存储过程,能够完成特定功能的sql片段。特点:无需利用call关键字调用,当对数据表中的数据执行操作时,自动触发这个sql片段的执行无需手动调用
在mysql中,只有执行增、删、改的操作时才能触发触发器
案例 - 1.创建一个日志信息表:记录对学生信息的操作(记录在时间对学生进行了***的操作)
-- 创建一个日志信息表:记录对学生信息的操作(记录在***时间对***学生进行了***的操作)
CREATE TABLE stulogs(
id int primary key auto_increment,
logtime TIMESTAMP,
logtext VARCHAR(200)
);
- 触发器的使用
eg.手动添加
- 创建触发器
语法:
- 创建触发器
CREATE TRIGGER <触发器名>
<before|after> -- 定义触发时机
<insert|delete|update> -- 定义DML类型
ON <数据表名>
FOR EACH ROW
sql——statement -- 触发器操作
eg.
CREATE TRIGGER tri_test1
before insert on students
-- 意为:创建触发器tri_test1,在students表进行insert操作之前触发tri_test1触发器
FOR EACH ROW -- 声明为行级触发器(只要操作一条记录就触发触发器执行一次)
sql——statement -- 触发器操作
CREATE TRIGGER tru_test1
after insert on students
FOR EACH ROW
INSERT into stulogs(logtime,logtext) VALUES(now(),CONCAT('添加',NEW.stunum,'学生信息'));
- 查看触发器
show triggers;
- 删除触发器
drop trigger tri_test1; - 测试
当添加两个学生信息的时候,就会触发两次触发器
这就称为行级触发器,就是说触发器的触发次数,依据添加的次数来决定的
触发器的NEW与OLD
触发器相当于一个监听器,用于监听数据表中数据的增、删、改操作,在这些操作前或后完成某些操作,处理DML关联操作
通过使用NEW与OLD关键字在触发器中获取这个触发器的DML操作的数据
- NEW:用于获取用户insert操作添加的数据或update操作后的记录
就是形参的定义与获取
- OLD:在触发器中用于获取delete操作前的数据或update操作前的记录
两个关键字主要是用于动态获取数据用的,对于数据的定义以及获取方式的声明
注意NEW与OLD关键字使用的时机
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了