美文网首页
mysql触发器。

mysql触发器。

作者: 像敏锐的狗 | 来源:发表于2018-01-05 17:25 被阅读14次

    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触发器。

          本文链接:https://www.haomeiwen.com/subject/ohpsnxtx.html