zoukankan      html  css  js  c++  java
  • mysql触发器

    触发器:trigger, 枪击,扳击,引线的意思

    一触即发,

    作用: 监视某种情况并触发某种操作.

    观察以下场景:

    一个电子商城,

    商品表,  g

    主键

    商品名

    库存

    1

    电脑

    28

    2

    自行车

    12

    订单表, o

    订单主键

    商品外键

    购买数量

    1

    2

    3

    2

    1

    5

    完成下单与减少库存的逻辑

    Insert into o (gid,num) values (2,3);  // 插入语句

    Update g set goods_num = goods_num - 3 where id = 2;// 更新过程

    这两个逻辑可以看成一个整体,或者说, insert ---> 引来 update

    用触发器可以解决上述问题.

    我们可以监视某表的变化,当发生某种变化时,触发某个操作.

    触发器: 

    能监视: 增,删,改

    触发操作: 增,删,改

    四要素:

    监视地点

    监视事件

    触发时间

    触发事件

    创建触发器的语法

    Create trigger triggerName 

    After/before insert/update/delete  on 表名

    For each row #这句话是固定的

    Begin

    Sql语句;  # 一句或多句,insert/update/delete范围内

    End;

    删除触发器的语法:

    Drop trigger 触发器名

    查看触发器

    Show triggers

    如何在触发器引用行的值

    对于insert而言, 新增的行 用new 来表示,

    行中的每一列的值 ,用new.列名来表示.

    对于 delete来说, 原本有一行,后来被删除,

    想引用被删除的这一行,用old,来表示,  old.列名,就可以引用被删行中的值.

    对于update来说,

    被修改的行, 

    修改前的数据 ,用 old来表示, old.列名引用被修改之前行中的值

    修改后的数据,用new 来表示, new.列名引用被修改之后行中的值

  • 相关阅读:
    tar (child): gzip: Cannot exec: No such file or directory
    通过应用数字格式来修复文本格式的数字
    Logback
    Transport
    nginx note
    docker note
    k8s note
    spring boot properties
    Windows 和 Linux 的文件名
    安装配置ubuntu的web项目(新)
  • 原文地址:https://www.cnblogs.com/panxuejun/p/5952580.html
Copyright © 2011-2022 走看看