mysql之触发器

1.触发器

2.创建触发器语法

 

 

(1)创建一个触发器,这样当order_table这个订单表中被insert插入数据后,就会触发begin和end之间的sql语句,after insert表示被监听的order_table表在insert之后触发触发器begin和end之间的代码。

-- 创建一个触发器tg1 监听order_table表,当order_table表有了insert操作之后
-- 触发begin和end中间的sql语句,begin和end之间的sql语句可以有多条sql语句,多条sql语句用;间隔
create TRIGGER tg1 AFTER INSERT on order_table
for EACH row -- 固定写法
BEGIN
    update goods set num = num -3 where id = 1;
END

(2)删除触发器

-- 删除触发器
DROP TRIGGER tg1;

(3)触发器中的语句动态的得到监听表中数据的更新或插入数据的值

-- 创建一个触发器tg1 监听order_table表,当order_table表有了insert操作之后
-- 触发begin和end中间的sql语句,begin和end之间的sql语句可以有多条sql语句,多条sql语句用;间隔
-- new.much 和new.gid中的new是关键字,当监听的表中有insert操作时,new就代指的那些被操作的数据
-- 的集合。new.much就表示新插入监听表中数据的much字段值拿到,new.gid就表示将新插入监听表中数据的gid字段值拿到
-- 如此触发器中的sql语句便可动态的识别到插入监听表中的数据的值
create TRIGGER tg1 AFTER INSERT on order_table
for EACH row -- 固定写法
BEGIN
    update goods set num = num - new.much where id = new.gid;
END

-- 删除触发器
DROP TRIGGER tg1;

(4)模拟退货订单表中的订单数量与商品表的变化

-- 创建一个触发器tg2,监听的表是order_table,监听的事件时update修改操作,在修改操作之后触发触发器的语句
-- 监听到update修改order_table订单表时,则会触发将商品表中的商品数量num设置为商品数量+老的订单数 - 修改order_table时的值,修改的是那条老的订单记录
create TRIGGER tg2 after update on order_table
for each ROW
BEGIN
    update good set num = num + old.much - new.much where id = old.gid;
END

(5)模拟删除订单后的商品表的变化

-- 模拟订单删除后商品表的变量。
-- 创建一个触发器,监听order_table订单表的删除事件,当删除之后触发触发器中的sql语句
create TRIGGER tg3 after DELETE on order_table
for EACH ROW
BEGIN
    update good set num = num + old.much from where id = new.gid; -- 修改商品表中的num商品数据量字段的值等于剩余的num值+订单中之前的值,修改的是删除订单记录的那条记录中的商品的id对应的商品表中的商品
END

(6)查看触发器

-- 查看触发器
show TRIGGERS;

 

转载于:https://www.cnblogs.com/whylinux/p/9919242.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值