码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-20 18:43:06      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:insert   update   values   触发器   如何   


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

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$



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

标签:insert   update   values   触发器   如何   

原文地址:http://1154179272.blog.51cto.com/10217799/1653264

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!