首页 > 电脑专区 > 电脑教程 >

MySQL之如何使用触发器

来源:互联网 2023-02-21 17:59:37 版权归原作者所有,如有侵权,请联系我们

触发器:它是一个特殊的存储过程,它是MySQL在insert、update、delete的时候执行,自动执行,不能直接调用。tuW办公区 - 实用经验教程分享!

它包含四个要素:tuW办公区 - 实用经验教程分享!

1. 监视地点(table)tuW办公区 - 实用经验教程分享!

2. 监视事件(insert/update/delete)tuW办公区 - 实用经验教程分享!

3. 触发时间(after/before)tuW办公区 - 实用经验教程分享!

4. 触发事件(insert/update/delete)tuW办公区 - 实用经验教程分享!

触发器

  • 1

    语法:tuW办公区 - 实用经验教程分享!

    create trigger trigger_nametuW办公区 - 实用经验教程分享!

    after/before insert/update/delete on tb_nametuW办公区 - 实用经验教程分享!

    for each rowtuW办公区 - 实用经验教程分享!

    begintuW办公区 - 实用经验教程分享!

    sql 语句:(触发的语句一句或者多句)tuW办公区 - 实用经验教程分享!

    end;tuW办公区 - 实用经验教程分享!

  • 2

    现有两张表 商品表 goods 和订单表 order 来说明触发器的工作原理;tuW办公区 - 实用经验教程分享!

    MySQL之如何使用触发器tuW办公区 - 实用经验教程分享!

    MySQL之如何使用触发器tuW办公区 - 实用经验教程分享!

  • 2本页面未经授权抓取自百度经验
  • 3

    我们现在往goods表添加四条记录:tuW办公区 - 实用经验教程分享!

    insert into goods (goods_name,goods_num)values("手机",20),("电脑",30),("单反",20);tuW办公区 - 实用经验教程分享!

  • 4

    1. 实现购买任意商品,对应的商品数量相应的减少:tuW办公区 - 实用经验教程分享!

    分析:tuW办公区 - 实用经验教程分享!

    监视地点:order 表tuW办公区 - 实用经验教程分享!

    监视事件:insert操作tuW办公区 - 实用经验教程分享!

    触发时间:在insert操作之后tuW办公区 - 实用经验教程分享!

    触发事件:update操作tuW办公区 - 实用经验教程分享!

    tuW办公区 - 实用经验教程分享!

    CREATE TRIGGER t1tuW办公区 - 实用经验教程分享!

    AFTER INSERT ON `order`tuW办公区 - 实用经验教程分享!

    FOR EACH ROWtuW办公区 - 实用经验教程分享!

    BEGINtuW办公区 - 实用经验教程分享!

    UPDATE goods SET goods_num=goods_num-new.order_num WHERE goods_id=new.goods_id;tuW办公区 - 实用经验教程分享!

    ;tuW办公区 - 实用经验教程分享!

  • 5

    如 我们购买5个手机:tuW办公区 - 实用经验教程分享!

    INSERT INTO `order` (goods_id,order_num) VALUES(1,5);tuW办公区 - 实用经验教程分享!

    注:对于insert 而言 新增的行使用new 来表示,行中的每一列的值用 new.列名来表示tuW办公区 - 实用经验教程分享!

    这时我们会发现goods表、order表的数据如下:tuW办公区 - 实用经验教程分享!

    MySQL之如何使用触发器tuW办公区 - 实用经验教程分享!

    MySQL之如何使用触发器tuW办公区 - 实用经验教程分享!

  • 6

    2.撤销订单:tuW办公区 - 实用经验教程分享!

    分析:tuW办公区 - 实用经验教程分享!

    监视地点:order 表tuW办公区 - 实用经验教程分享!

    监视事件:delete操作tuW办公区 - 实用经验教程分享!

    触发时间:在delete操作之后tuW办公区 - 实用经验教程分享!

    触发事件:update操作tuW办公区 - 实用经验教程分享!

    tuW办公区 - 实用经验教程分享!

    DROP TRIGGER if EXISTS t1;tuW办公区 - 实用经验教程分享!

    CREATE TRIGGER t1tuW办公区 - 实用经验教程分享!

    AFTER DELETE ON `order`tuW办公区 - 实用经验教程分享!

    FOR EACH ROWtuW办公区 - 实用经验教程分享!

    BEGINtuW办公区 - 实用经验教程分享!

    UPDATE goods SET goods_num=goods_num old.order_num WHERE goods_id=old.goods_id;tuW办公区 - 实用经验教程分享!

    ;tuW办公区 - 实用经验教程分享!

  • 7

    现在要取消刚才买的5个手机的订单:tuW办公区 - 实用经验教程分享!

    DELETE FROM `order` WHERE order_id=1;tuW办公区 - 实用经验教程分享!

    注:对于delete而言 删除的行使用old 来表示, 行中的每一列的值用 old.列名来表示tuW办公区 - 实用经验教程分享!

    这时我们会发现goods表、order表的数据发生了如下的变化:tuW办公区 - 实用经验教程分享!

    MySQL之如何使用触发器tuW办公区 - 实用经验教程分享!

    MySQL之如何使用触发器tuW办公区 - 实用经验教程分享!

  • 8

    修改订单(包括修改购买的数量以及购买的商品)tuW办公区 - 实用经验教程分享!

    分两步:tuW办公区 - 实用经验教程分享!

    1. 撤销订单;(delete);tuW办公区 - 实用经验教程分享!

    2. 新增订单:(insert);tuW办公区 - 实用经验教程分享!

    tuW办公区 - 实用经验教程分享!

    DROP TRIGGER if EXISTS t1;tuW办公区 - 实用经验教程分享!

    CREATE TRIGGER t1tuW办公区 - 实用经验教程分享!

    AFTER UPDATE ON `order`tuW办公区 - 实用经验教程分享!

    FOR EACH ROWtuW办公区 - 实用经验教程分享!

    BEGINtuW办公区 - 实用经验教程分享!

    -- 撤销订单tuW办公区 - 实用经验教程分享!

    UPDATE goods SET goods_num=goods_num old.order_num WHERE goods_id=old.goods_id;tuW办公区 - 实用经验教程分享!

    -- 新增订单tuW办公区 - 实用经验教程分享!

    UPDATE goods SET goods_num=goods_num-new.order_num WHERE goods_id=new.goods_id;tuW办公区 - 实用经验教程分享!

    ;tuW办公区 - 实用经验教程分享!

    tuW办公区 - 实用经验教程分享!

    UPDATE `order` SET goods_id=2,order_num=4 WHERE order_id=2;tuW办公区 - 实用经验教程分享!

    tuW办公区 - 实用经验教程分享!

    现在看下两张表的变化:tuW办公区 - 实用经验教程分享!

    MySQL之如何使用触发器tuW办公区 - 实用经验教程分享!

    MySQL之如何使用触发器tuW办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!tuW办公区 - 实用经验教程分享!


    标签: 操作系统MYSQL使用触发

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号