类似饭店吃饭:
1.饭前付款----如果没钱,不让吃
2.饭后付款----如果没钱,也没办法
下订单减库存:
insert into o values (2,4,100); 2号订单,4号商品100件
实际上4号商品只有8件。
触发器里after和before的区别
after是先完成数据的增删改,再触发
触发中的语句晚于增删改,无法影响前面的增删改
before是先完成触发,再增删改
触发的语句先于监视的增删改发生,因此有机会审查、判断并修改即将发生的操作
典型案例:
对于所下订单进行判断,如果订单数量大于5,就认为是恶意订单,强制将锁定的商品数量改成5
监视地点 o表
监视事件 insert
触发事件 update
触发时间 before
目的 触发事件先于监视事件发生,并判断监视事件的数据
create trigger tg5
before insert on o
for eache row
begin
if new.much > 5 then
new.much = 5;
end if;
update g set num = num - new.much where id = new.gid;
end$
select * from o $
select * from g $
insert into o values (2,4,20)$
select * from o$
select * from g$
如何查看所有触发器:
show triggers;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24103417/viewspace-1415096/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24103417/viewspace-1415096/