mysql触发器。

trigger

进行数据库应用软件开发时,我们有时会碰到表中的某些数据改变,希望同时引起其他相关数据改变的需求,利用触发器就能满足这样的需求。它能在表中的某些特定数据变化时自动完成某些查询。运用触发器不仅可以简化程序,而且可以增加程序的灵活性

触发器是一类特殊的事务,可以监视某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete)。

监视地点(table)、监视事件(insert/update/delete)、触发时间(after/before)、触发事件(insert/update/delete)

需求:

商品表:goods 订单表:ord

当下一个订单时,对应的商品数量要相应减少

分析:

监视:ord

监视动作:insert

触发时间:after

触发事件:update

create trigger 触发器名称

after/before

insert/update/delete

on 监视表

for each row  //行级触发器

begin

sql1

...

sqln

end;

delimiter //

create trigger t1

after

insert

on ord

for each row

begin

update goods set num=num-new.much where gid=new.gid;

end//

create trigger t2

after

delete

on ord

for each row

begin

update goods set num = num + old.much where gid=old.gid

end//

#修改订单数量(仅限改数量)

create trigger t3

before

update

on ord

for each row

begin

update goods set num = num + old.much - new.much where gid=old.gid

end//

delmiter ;

show triggers;

drop trigger t1;

delmiter //

#判断库存是否足够

create trigger t1

before

insert

on ord

for each row

begin

#声明变量

declare

goods_num int;

select num into goods_num from goods where gid = new.gid;

#判断

if new.much > goods_num then

set new.much = goods_num;

end if;

update goods set num = num - new.much where gid=new.gid

end//

delmiter ;

你可能感兴趣的:(mysql触发器。)