1.已经介绍了触发器的定义以及适用场景,此时我们这里要实战一下:
1.首先我们设计一个触发器的场景 这里我们有两张表,一个goods表:里面对应的是商品的各种信息(gid,gname,gmuch) 一个订单表order:里面是用户下的订单(oid,gid,omuch) 设计原理:每当用户下订单后,商品表中的对应的商品数量会随着订单表的数量改变而变 2. 建表 create table goods(gid int not null,gname varchar(20),gmuch int)engine=innodb; create table orders(oid int not null,gid int,omuch int ) engine=innodb; 3.插入数据 insert into goods values(1,‘cat‘,100),(2,‘dog‘,200),(3,‘pig‘300);
2.创建触发器
语法:
create trigger 触发器名称 after/before(触发时间) insert /update/delete(监视事件) on 表名(监视地址) for each row begin sql1; .. sql2; end
这里的逻辑是:当用户下订单时,买了几个商品后,goods的总商品数量就会减少几个,因此这里用的是关键字new,且用总商品数量-new.用户下的商品数量
create trigger t1 after insert on orders for each row begin update goods set gmuch=gmuch-new.omuch where gid=new.gid; end $
如果这里逻辑是:当用户取消订单时,这里是要用关键字old, 具体操作是用总商品的数量+old.用户取消的商品的数量
update goods set gmuch=gmuch+old.omuch where gid=old.gid;
原文:https://www.cnblogs.com/zmc60/p/14643513.html