23_触发器_库存与订单实战


如何在触发器引用行的值?

1.对于insert 而言,新增的行用 new 来表示

行中每一列的值,用  new.列名  来表示

2.对于delete来说,原本有一行,后来被删除

想引用被删除的这一行用 old 来表示,

old.列名  就可以引用被删行中的值

3.对于update来说,被修改的行

修改前的数据,用old来表示,old.列名  引用被修改之前行中的值

修改后的数据,用new来表示,new.列名  引用被修改之后行中的值

综上:

监视的事件是insert,触发的事件中引用行的值 new.列名

监视的事件是delete,触发的事件中引用行的值 old.列名

监视的事件是update,触发的事件中引用行的值 old.列名  new.列名

----------------------------------------

一张商品表g,一张订单表o

create table g (g_id int,g_name char(2),g_inventory int);

insert into g values

(1,"猪",23),

(2,"鸭",18),

(3,"羊",15),

(4,"牛",30);

create table o (o_id int,o_name char(2),o_buy int);

例1:订单表有新增,商品表库存数据就会减少:

delimiter $

create trigger t1

after insert on o

for each row

begin

update g set g_inventory=g_inventory-new.o_buy where g_name=new.o_name;

end$

insert into o values (1,"猪",3)$

select * from o$

+------+--------+-------+

| o_id | o_name | o_buy |

+------+--------+-------+

|    1 | 猪     |     3 |

+------+--------+-------+

select * from g$

+------+--------+-------------+

| g_id | g_name | g_inventory |

+------+--------+-------------+

|    1 | 猪     |          20 |

|    2 | 鸭     |          18 |

|    3 | 羊     |          15 |

|    4 | 牛     |          30 |

+------+--------+-------------+

---------------------------------------------------

例2:创建删除订单的触发器:

#监视地点:o表

#监视事件:delete

#触发时间:after

#触发事件:update

create trigger t2

after delete on o

for each row

begin

update g set g_inventory=g_inventory+old.o_buy where g_name=old.o_name;

end$

----------------------------------------

例3:创建修改订单的触发器:

#监视地点:o表

#监视事件:update

#触发时间:after

#触发事件:update

create trigger t3

after update on o

for each row

begin

update g set g_inventory=g_inventory+old.o_buy-new.o_buy where g_name=old.o_name;

end$

				
时间: 2024-10-10 07:31:05

23_触发器_库存与订单实战的相关文章

碧桂园营销院长朱晓波-三四线城市快速去库存营销策略实战解析

三四线城市快速去库存营销策略实战解析 课程特色1.最干货,5个维度20招去库存策略.2.最实战,标杆地产企业营销与管理实战一站式全面解析.3.最热点,解读最新房产新政及一季度业绩分析.4.最超值,针对每家企业,给出一招去库存建议.5.最专业,营销学院院长传授营销人才培养实战经验.师资介绍朱晓波业界知名的房地产营销策划和转型发展研究专家,曾任千亿房企碧桂园营销学院院长,国内首家房产全民众销平台.O2O房产电商公司好屋中国大学校长. 在华为.美国友邦.碧桂园等著名大型企业从事培训和营销管理近20年,

Ecshop_货品规格_价格不同_库存不同

规格效果 商品类型->必须点选(单选属性) 新加商品->属性->单独设置价格 货品设置 库存设置 Ecshop_货品规格_价格不同_库存不同

NLP系列(4)_朴素贝叶斯实战与进阶(转)

http://blog.csdn.net/han_xiaoyang/article/details/50629608 作者: 寒小阳 && 龙心尘 时间:2016年2月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/50629608 http://blog.csdn.net/longxinchen_ml/article/details/50629613 声明:版权所有,转载请联系作者并注明出处 1.引言 前两篇博文介绍了朴素贝叶

NLP系列(4)_朴素贝叶斯实战与进阶

作者: 寒小阳 && 龙心尘 时间:2016年2月. 出处: http://blog.csdn.net/han_xiaoyang/article/details/50629608 http://blog.csdn.net/longxinchen_ml/article/details/50629613 声明:版权所有,转载请联系作者并注明出处 1.引言 前两篇博文介绍了朴素贝叶斯这个名字读着"萌蠢"但实际上简单直接高效的方法,我们也介绍了一下贝叶斯方法的一些细节.按照老规

Web前端_微信小程序实战开发

微信小程序开发实战教程 一.微信小程序 它是一种混合开发的方式. 是安装在微信中的程序(一个程序最多2M空间). 1.1 注册 1  2 点击立即注册:进入下方页面 3  4 点击小程序进入表单填写页面 5  6 填写完毕之后提交,会让你去邮箱中激活.激活之后就可以进入小程序开发了. 1.2 安装开发工具 经过1.1注册之后,我们有了开发账号,但是没有办法凭空开发内容,我们需要下载开发工具.使用微信提供的开发工具进行开发. 下载地址: 1 https://developers.weixin.qq

触发器_实现ORACEL自动增长字段

实现XX表的字段code,为自动增长字段? 1.创建一个sequence,如图: 输入如下数据: S_COUNTRY为sequence名称 2.创建一个触发器,目的是在插入数据之前插入自动增长的数字,创建触发器 然后填写代码 create or replace trigger t_carmessage before insert on tb_carmessage for each row declare -- local variables here begin select S_COUNTRY

【BigData】Java基础_创建一个订单类

需求描述 定义一个类,描述订单信息订单id订单所属用户(用户对象)订单所包含的商品(不定数量个商品对象)订单总金额订单应付金额:    总金额500~1000,打折85折    总金额1000~1500,打折80折    总金额1500~2000,打折70折    总金额超过2000,打折65折         在此基础上,还要看用户的vip等级    用户vip等级为:一般会员,则折上折:95    用户vip等级为:中级会员,则折上折:90    用户vip等级为:高级会员,则折上折:80

使用Facade模式更新库存、确认订单、采取打折、确认支付、完成支付、物流配送

Facade模式对外提供了统一的接口,而隐藏了内部细节.在网上购物的场景中,当点击提交订单按钮,与此订单相关的库存.订单确认.折扣.确认支付.完成支付.物流配送等都要做相应的动作.本篇尝试使用Facade模式,把这些类似工作者单元的动作隐藏到一类中,只要点击提交订单,余下的事情一步到位: □ 关于库存 namespace ConsoleApplication1.Interfaces { public interface IInventory { void Update(int productId

零基础Swift实战开发视频教程_从入门到精通

零基础Swift实战开发从入门到精通(4大项目实战.酷跑熊猫.百度音乐.足球游戏等)适合人群:初级课时数量:50课时更新程度:86%用到技术:Swift涉及项目:酷跑熊猫.百度音乐.足球游戏咨询qq:1840215592零基础Swift实战开发视频教程采用基础+项目的方式进行讲解,通过基础的学习,可以完全掌握Swift基本语法应用,并结合4个项目进行开发,学员能在最短的时间内掌握开发的各项技能. 零基础Swift实战开发从入门到精通详细查看:http://www.ibeifeng.com/goo