steam想申明库存量,不晓得在哪里去增设,那个出口处是稍稍有点儿深,由此可见毕竟也很单纯,一起来看一看什么样操作方式。操作方式方式01登入steam后,点选街道社区旁的对个人......
2024-02-05 549
触发器:它是一个特殊的存储过程,它是MySQL在insert、update、delete的时候执行,自动执行,不能直接调用。
它包含四个要素:
1. 监视地点(table)
2. 监视事件(insert/update/delete)
3. 触发时间(after/before)
4. 触发事件(insert/update/delete)
语法:
create trigger trigger_name
after/before insert/update/delete on tb_name
for each row
begin
sql 语句:(触发的语句一句或者多句)
end;
现有两张表 商品表 goods 和订单表 order 来说明触发器的工作原理;
我们现在往goods表添加四条记录:
insert into goods (goods_name,goods_num)values("手机",20),("电脑",30),("单反",20);
1. 实现购买任意商品,对应的商品数量相应的减少:
分析:
监视地点:order 表
监视事件:insert操作
触发时间:在insert操作之后
触发事件:update操作
CREATE TRIGGER t1
AFTER INSERT ON `order`
FOR EACH ROW
BEGIN
UPDATE goods SET goods_num=goods_num-new.order_num WHERE goods_id=new.goods_id;
;
如 我们购买5个手机:
INSERT INTO `order` (goods_id,order_num) VALUES(1,5);
注:对于insert 而言 新增的行使用new 来表示,行中的每一列的值用 new.列名来表示
这时我们会发现goods表、order表的数据如下:
2.撤销订单:
分析:
监视地点:order 表
监视事件:delete操作
触发时间:在delete操作之后
触发事件:update操作
DROP TRIGGER if EXISTS t1;
CREATE TRIGGER t1
AFTER DELETE ON `order`
FOR EACH ROW
BEGIN
UPDATE goods SET goods_num=goods_num old.order_num WHERE goods_id=old.goods_id;
;
现在要取消刚才买的5个手机的订单:
DELETE FROM `order` WHERE order_id=1;
注:对于delete而言 删除的行使用old 来表示, 行中的每一列的值用 old.列名来表示
这时我们会发现goods表、order表的数据发生了如下的变化:
修改订单(包括修改购买的数量以及购买的商品)
分两步:
1. 撤销订单;(delete);
2. 新增订单:(insert);
DROP TRIGGER if EXISTS t1;
CREATE TRIGGER t1
AFTER UPDATE ON `order`
FOR EACH ROW
BEGIN
-- 撤销订单
UPDATE goods SET goods_num=goods_num old.order_num WHERE goods_id=old.goods_id;
-- 新增订单
UPDATE goods SET goods_num=goods_num-new.order_num WHERE goods_id=new.goods_id;
;
UPDATE `order` SET goods_id=2,order_num=4 WHERE order_id=2;
现在看下两张表的变化:
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
相关文章
steam想申明库存量,不晓得在哪里去增设,那个出口处是稍稍有点儿深,由此可见毕竟也很单纯,一起来看一看什么样操作方式。操作方式方式01登入steam后,点选街道社区旁的对个人......
2024-02-05 549
操作方式方法01【辅助widget】多种辅助工具相连接两个功能键的可同时按【Shift】加此功能键挑选出1、正方形、圆锥选框辅助工具 【M】 2、终端辅助工具 【V】 3、截叶......
2024-02-05 481
操作方式01文档格式难题qq肖像最合适用jpeg文档格式的相片,若是相片有透明化地下通道,能选用png文档格式上载。 02大小不一难题若是相片极重也可能将引致上载失利,检......
2024-02-05 405