|NO.Z.00069|——————————|BigDataEnd|——|Java&MySQL索引/存储过程/触发器.V10|——|MySQL.v10|触发器介绍|
一、什么是触发器
### --- 什么是触发器
~~~ # 触发器(trigger)
——> 是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,
——> 它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,
——> 而是由事件来触发,比如当对一个表进行操作(insert,delete, update)时就会激活它执行。
——> ——百度百科
~~~ # 简单理解:
——> 当我们执行一条sql语句的时候,这条sql语句的执行会自动去触发执行其他的sql语句。
### --- 触发器创建的四个要素
——> 1. 监视地点(table)
——> 2. 监视事件(insert/update/delete)
——> 3. 触发时间(before/after)
——> 4. 触发事件(insert/update/delete)
### --- 创建触发器
——> 语法格式
delimiter $ -- 将Mysql的结束符号从 ; 改为 $,避免执行出现错误
CREATE TRIGGER Trigger_Name -- 触发器名,在一个数据库中触发器名是唯一的
before/after(insert/update/delete) -- 触发的时机 和 监视的事件
on table_Name -- 触发器所在的表
for each row -- 固定写法 叫做行触发器, 每一行受影响,触发事件都执行
begin
-- begin和end之间写触发事件
end
$ -- 结束标记
### --- 向商品中添加一条数据
~~~ # 向商品中添加一条数据
INSERT INTO goods VALUES(1,'book',40);
### --- 需求: 在下订单的时候,对应的商品的库存量要相应的减少,卖出商品之后减少库存量。
——> 编写触发器
-- 1.修改结束标识
DELIMITER $
-- 2.创建触发器
CREATE TRIGGER t1
-- 3.指定触发的时机,和要监听的表
AFTER INSERT ON orders
-- 4.行触发器 固定写法
FOR EACH ROW
-- 4.触发后具体要执行的事件
BEGIN
-- 订单+1 库存-1
UPDATE goods SET num = num -1 WHERE gid = 1;
END$
### --- 查询 goods表中的数据

### --- 向订单表中添加一条数据
INSERT INTO orders VALUES(1,1,25);
### --- goods表中的数据随之 -1

二、sql语句
### --- sql语句
/*
触发器
当我们执行一条sql语句的时候,这条sql语句的执行会自动去触发执行其他的sql语句。
触发器创建的四个要素
1. 监视地点(table)
2. 监视事件(insert/update/delete)
3. 触发时间(before/after)
4. 触发事件(insert/update/delete)
创建触发器
语法结构
delimiter $ -- 自定义结束符号
create trigger 触发器名
after/before(insert/update/delete) -- 触发的时机 和监视的事件
on tableName -- 触发器所在表
for each row -- 固定写法 表示行触发器
begin
-- 被触发的事件
end $
*/
-- 向商品表中插入数据
INSERT INTO goods VALUES(4,'book',40);
-- 需求: 在下订单的时候,对应的商品的库存量要相应的减少,卖出商品之后减少库存量
/*
监视的表 orders
监视的事件 insert
触发的时间 after
触发的事件 update
*/
-- 1.修改结束符号
DELIMITER $
-- 2.创建触发器
CREATE TRIGGER t1
-- 3.设置触发的时间 以及监视的事件 监视的表
AFTER INSERT ON orders
-- 4.行触发器
FOR EACH ROW
-- 5.触发后要执行的操作
BEGIN
-- 执行修改库存的操作 订单+1 库存-1
UPDATE goods SET num = num - 1 WHERE gid = 4;
END $
-- 向orders表插入一个订单
INSERT INTO orders VALUES(1,4,25);
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
bdv005-mysql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通