美文网首页
MySQL之如何使用触发器

MySQL之如何使用触发器

作者: 帅气的Lucky | 来源:发表于2018-11-13 15:17 被阅读0次

触发器:它是一个特殊的存储过程,它是MySQL在insert、update、delete的时候执行,自动执行,不能直接调用。

它包含四个要素:

  1. 监视地点(table)

  2. 监视事件(insert/update/delete)

  3. 触发时间(after/before)

  4. 触发事件(insert/update/delete)

触发器

  1. 语法:
    create trigger trigger_name

    after/before   insert/update/delete on tb_name

    for each row

    begin

    sql 语句:(触发的语句一句或者多句)

    end;
  1. 现有两张表 商品表 goods 和订单表 order 来说明触发器的工作原理;

    MySQL之如何使用触发器
    (http://jingyan.baidu.com/album/154b46311c9aed28cb8f4159.html?picindex=2)
  2. 我们现在往goods表添加四条记录:

 insert into goods (goods_name,goods_num)values("手机",20),("电脑",30),("单反",20);
  1. 实现购买任意商品,对应的商品数量相应的减少:

    分析:

    监视地点:order 表

    监视事件:insert操作

    触发时间:在insert操作之后

    触发事件:update操作

    CREATE TRIGGER t1

    AFTER  INSERT ON `order`

    FOR EACH ROW

    BEGIN

    UPDATE goods SET goods_num=goods_num-new.order_num WHERE goods_id=new.goods_id;

    END;
  1. 如 我们购买5个手机:

    INSERT INTO order (goods_id,order_num) VALUES(1,5);

    注:对于insert 而言 新增的行使用new 来表示,行中的每一列的值用 new.列名来表示

    这时我们会发现goods表、order表的数据如下:

    MySQL之如何使用触发器
    (http://jingyan.baidu.com/album/154b46311c9aed28cb8f4159.html?picindex=4)
  2. 2.撤销订单:

    分析:

    监视地点:order 表

    监视事件:delete操作

    触发时间:在delete操作之后

    触发事件:update操作

    DROP TRIGGER if EXISTS t1;

    CREATE TRIGGER t1

    AFTER DELETE ON `order`

    FOR EACH ROW

    BEGIN

    UPDATE goods SET goods_num=goods_num+old.order_num WHERE goods_id=old.goods_id;

    END;
  1. 现在要取消刚才买的5个手机的订单:

    DELETE FROM order WHERE order_id=1;

    注:对于delete而言 删除的行使用old 来表示, 行中的每一列的值用 old.列名来表示

    这时我们会发现goods表、order表的数据发生了如下的变化:

    MySQL之如何使用触发器

(http://jingyan.baidu.com/album/154b46311c9aed28cb8f4159.html?picindex=6)

  1. 修改订单(包括修改购买的数量以及购买的商品)

    分两步:

    1. 撤销订单;(delete);

    2. 新增订单:(insert);

    DROP TRIGGER if EXISTS t1;

    CREATE TRIGGER t1

    AFTER UPDATE ON `order`

    FOR EACH ROW

    BEGIN

    #撤销订单

    UPDATE goods SET goods_num=goods_num+old.order_num WHERE goods_id=old.goods_id;

    #新增订单

    UPDATE goods SET goods_num=goods_num-new.order_num WHERE goods_id=new.goods_id;

    END;
UPDATE `order` SET goods_id=2,order_num=4 WHERE order_id=2;

现在看下两张表的变化:

[![MySQL之如何使用触发器](https://img.haomeiwen.com/i11222021/ac615935f8bf6d7a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](http://jingyan.baidu.com/album/154b46311c9aed28cb8f4159.html?picindex=7) 

(http://jingyan.baidu.com/album/154b46311c9aed28cb8f4159.html?picindex=8)

注意:

如果在执行创建触发器的时候语句报错

那在 语句之前添加

delimiter $$
CREATE TRIGGER t1
AFTER  INSERT ON order
...

相关文章

  • MySQL之触发器

    本文主要介绍MySQL中触发器的相关知识与应用,为什么使用触发器,以及如何使用触发器。 I、触发器简介 如果我们想...

  • dbForge Studio for MySQL 触发器调试

    使用工具:dbForge Studio for MySQL 1,创建触发器 2,调试触发器 要调试MySQL触发...

  • MySQL触发器

    在本节中,您将学习如何使用MySQL触发器。 根据定义,触发器或数据库触发器是自动执行以响应于在表中发生的特定事件...

  • MySQL之如何使用触发器

    触发器:它是一个特殊的存储过程,它是MySQL在insert、update、delete的时候执行,自动执行,不能...

  • Mysql触发器语法与项目中的一次使用

    Mysql触发器语法与项目中的一次使用 触发器简介 : 触发器(Trigger)是一个特殊的存储过程,它的执行不是...

  • mysql视图,触发器,存储过程优缺点及应用分析

    mysql视图,触发器,存储过程优缺点及应用分析 视图 mysql使用较少,是sql server和orcale使...

  • Mysql学习笔记(7)-触发器和mysql权限

    目录 一.触发器 创建触发器 二.mysql权限 查询root用户密码 如何修改root用户密码 分配权限账户 三...

  • mysql触发器

    为了梦想,努力奋斗! 追求卓越,成功就会在不经意间追上你 mysql之触发器trigger 触发器(trigger...

  • MySQL使用触发器

    使用触发器 1. 触发器 ​ MySQL语句在需要时被执行,存储过程也是如此。但是,如果你想要某条语句在事件发...

  • 触发器

    MySQl中触发器 MySQl中触发器的语法如下: 例子:其中,new代表新插入的行记录

网友评论

      本文标题:MySQL之如何使用触发器

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