博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 触发器的使用
阅读量:4207 次
发布时间:2019-05-26

本文共 1414 字,大约阅读时间需要 4 分钟。

MySQL 触发器trigger

触发器:

监视某种情况并且触发某种操作

触发器创建语法的四要素:

1. 监视地点 table2. 监视事件 insert/update/delete3. 触发时间 after/before4. 触发事件 insert/update/delete

语法:

create trigger triggerNameafter/before insert/update/delete on 表名for each row   #这句话在mysql是固定的begin    sql语句;end;

例子:

数据准备

#商品表create table g(  id int primary key auto_increment,  name varchar(20),  num int);#订单表create table o(  oid int primary key auto_increment,   gid int,    much int);insert into g(name,num) values('商品1',10),('商品2',10),('商品3',10);

如果我们在没使用触发器之前:假设我们现在卖了3个商品1,我们需要做两件事

1.往订单表插入一条记录

insert into o(gid,much) values(1,3);

2.更新商品表商品1的剩余数量

update g set num=num-3 where id=1;

创建一个触发器

create trigger tg1after insert on ofor each row beginupdate g set num=num-new.much where id=new.gid;(注意此处和第一个触发器的不同)end$

这样当往订单表中插入数据时就会自动更新商品表的数据

另外两种情况

当用户撤销一个订单的时候,订单表直接删除一个记录,商品表的数量要还原

create trigger tg2after delete on ofor each rowbeginupdate g set num = num + old.much where id = old.gid;end

修改订单表中记录的数量时也要相应的修改商品表中的剩余数量

create trigger tg3 after update on ofor each rowBEGINupdate g set num = num+old.much-new.much where id = new.gid;end

现在还可能存在一个问题,就是当订单中插入的数量大于商品剩余数量,那么商品剩余数量更新出来的结果就是负数,解决方法就是在订单表插入数据之前进行判断,判断要插入的数量是否大于商品的剩余数量

create trigger tg4before insert on ofor each ROWBEGIN    SET @num = (select num from g where id = new.gid);    if new.much > @num then         set new.much = @num;      end IF;  update g set num = num - new.much where id = new.gid;end

转载地址:http://hhqli.baihongyu.com/

你可能感兴趣的文章
网站加载代码
查看>>
php图像处理函数大全(缩放、剪裁、缩放、翻转、旋转、透明、锐化的实例总结)
查看>>
magento url中 uenc 一坨编码 base64
查看>>
强大的jQuery焦点图无缝滚动走马灯特效插件cxScroll
查看>>
Yii2.0 数据库查询
查看>>
yii2 db 操作
查看>>
mongodb group 有条件的过滤组合个数。
查看>>
yii2 用命令行操作web下的controller
查看>>
关于mongodb的 数组分组 array group
查看>>
MongoDB新的数据统计框架介绍
查看>>
mongodb fulltextsearch 关于语言的设置选项
查看>>
mongodb 增加全文检索索引
查看>>
symfony
查看>>
yourls 短连接 安装
查看>>
yii2 php namespace 引入第三方非namespace库文件时候,报错:Class not found 的解决
查看>>
softlayer 端口开放
查看>>
操作1:mongodb安装
查看>>
操作2:mongodb使用语法
查看>>
如何给分类增加一个属性(后台)
查看>>
linux设置环境变量 临时设置 和 永久设置
查看>>