触发器trigger
触发器trigger
触发器(trigger):监视某种情况,并触发某种操作,它的执行是由事件来触发的,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。
触发器经常用于加强数据的完整性约束和业务规则等。 触发器创建语法四要素:
1.监视地点(table)
2.监视事件(insert/update/delete)
3.触发时间(after/before)
4.触发事件(insert/update/delete)
触发器基本语法
创建触发器:
Create trigger trigger_name trigger_time trigger_event on tb_name for each row trigger_stmt;
trigger_time :触发器的触发事件,可以为before(在检查约束前触发)
或after(在检查约束后触发);
trigger_event:是触发器的触发事件,包括insert、update和delete;
tb_name: 表示建立触发器的表名,就是在哪张表上建立触发器
trigger_stmt: 触发器的程序体,可以是一条SQL语句或者是用BEGIN和END包含的多条语句;
FOR EACH ROW:表示任何一条记录上的操作满足触发事件都会触发该触发器。
删除触发器:
Drop trigger 触发器名称。
- 1
练习:
– 创建商品表
create table g(
id int primary key auto_increment,
name varchar(20),
num int
);
– 创建订单表
create table o(
oid int primary key auto_increment,
gid int,
much int
);
– 插入商品
insert into g(name,num) values(‘苹果’,10),(‘香蕉’,10),(‘桔子’,10);
练习1: 卖了3个苹果,请更新商品表和订单表中的数据。
– 1.往订单表插入一条记录
insert into o(gid,much) values(1,3);
- 1
– 2.更新商品表商品1的剩余数量
update g set num=num-3 where id=1;
- 1
– 练习2:使用触发器来完成练习1的效果。
– 创建触发器
– 修改结束符
delimiter $-- 修改字符集
create trigger trigger01 after update on g for each ROW-- 创建触发器
BEGIN -- 开始
insert into o(gid,much) values(1,3);
END $-- 结束
delimiter ;
update g set num=num-3 where id=1;
练习3:创建对任意商品改变的触发器
扩展:
new 和old 的使用:NEW.columnname:新增行的某列数据
OLD.columnname:删除行的某列数据
代码:
delimiter $
create trigger tg2 after insert on o for each row
BEGIN
update g set num = num-new.much where id = new.gid;
END $
delimiter ;
INSERT into o(gid,much) values(2,3);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix