zoukankan      html  css  js  c++  java
  • [MySQL]触发器

    案列:从新订单表添加购买或退货的数量,然后从goods表总数中增加或减少?

     

    create trigger TriggerName
    after/before 触发时间
    insert/update/delete 监控事件
    on 表名
    for each row
    begin
    sql1;
    ...
    sqlN;
    end

    创建goods表:

    create table goods
                 (
                              git  int
                            , name varchar(20)
                            , num  smallint
                 )
    ;

    创建ord表:

    create table ord
                 (
                              oid  int
                            , gid  int
                            , much smallint
                 )
    ;

    插入goods表种类数据:

    insert into goods values
           (1
                ,'cat', 34
           )
         ,
            (2
                ,'dog', 65
           )
         ,
            (3
                ,'pig', 21
           )
    ;

    简单触发器 insert delete update:

    delimiter $
    create trigger goods_ord_insert after
    insert
    on
           ord for each row begin
    update
           goods
    set    num=num-new.much
    where
           gid=new.gid
    ;

    end$

    delimiter $
    create trigger goods_ord_dele after
    delete
    on
           ord for each row begin
    update
           goods
    set    num=num+old.much
    where
           gid=old.gid
    ;

    end$

    delimiter $
    create trigger update_
    before
    update
    on ord
    for each row
    begin
    update goods set num=num+old.much-new.much where gid=new.gid;
    end$

    触发器升级版:

    如果剩余数量不足则只能卖出剩余数量;

    before   在内存中修改之前做判断还未写到硬盘中;

    after      在内存中修改之后写到硬盘后再去执行;

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

    if new.much     >rnum then
        set new.much=rnum;
    end if;
    update
           goods
    set    num=num-new.much
    where
           gid=new.gid
    ;

    end$

    for each  row 行级触发器

    遗憾mysql 不支持语句级触发器。

  • 相关阅读:
    Java笔记06
    Kubernetes V1.16.2部署Dashboard V2.0(beta5)
    安装Kubernetes V1.16.2
    Spring Cloud Stream 进行服务之间的通讯
    通过总线机制实现自动刷新客户端配置(Consul,Spring Cloud Config,Spring Cloud Bus)
    手动刷新客户端配置内容(Spring Cloud Config)
    创建客户端项目并读取服务化的配置中心(Consul + Spring Cloud Config)
    创建配置中心服务端(Spring Cloud Config)
    Consul集群加入网关服务(Spring Cloud Gateway)
    Consul集群Server+Client模式
  • 原文地址:https://www.cnblogs.com/kingwwz/p/8484028.html
Copyright © 2011-2022 走看看