mysql触发器预约实例_Mysql触发器实例分析

所谓触发器,就是在定义在表对象上。当触发器所在的表出现指定的事件时,会触发对应表的delete update insert的操作。说的有点绕口,其实就是到监视某种情况,然后去触发某种操作。

触发器是如何来进行定义的呢?

在定义时要注意四个基本的语法要素:

1 1.监视地点(某张table)2 2.监视事件(insert/update/delete)3 3.触发时间(触发时的时机after/before,在事件执行之后或者在事件执行之前)

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

5 具体语法:6 create trigger triggerName7 after/before insert/update/delete on 表名8 for each row #这句话在mysql是固定的9 begin10 sql语句;11 end;

实例的数据库表的结构如下:

1 SET FOREIGN_KEY_CHECKS=0;2

3 -- ----------------------------

4 -- Table structure fortb_goods5 -- ----------------------------

6 DROP TABLE IF EXISTS `tb_goods`;7 CREATE TABLE `tb_goods` (8 `g_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品ID',9 `goodname` varchar(20) DEFAULT NULL COMMENT '商品名称',10 `goodcount` int(11) DEFAULT NULL COMMENT '商品数目',11 PRIMARY KEY (`g_id`)12 ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;13

14

15 SET FOREIGN_KEY_CHECKS=0;16 -- ----------------------------

17 -- Table structure fortb_orders18 -- ----------------------------

19 DROP TABLE IF EXISTS `tb_orders`;20 CREATE TABLE `tb_orders` (21 `o_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单ID',22 `g_id` int(11) DEFAULT NULL COMMENT '商品ID',23 `ordercount` int(11) DEFAULT NULL COMMENT '订购数目',24 PRIMARY KEY (`o_id`)25 ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

解决如下几个问题:

(1)当我们向订单表中插入数据时,会将对应的商品的数目减少对应的数量,而不用手动去更新商品的数目。

初始的商品的数目:

14aa3831d3bbf192a91021fbe670bee8.png

08c5e4379dc903b9821fae1f281907c6.png

1 insert into tb_orders(g_id,ordercount) values(1,2)2 #向订单表中给商品编号为1的插入一条记录,则对应的商品ID为1的数目减23 #商品的数目

2ae48e3d323e479a99b838176337cc52.png

(2)当我们删除订单表中数据时,会将对应的商品的数目恢复到对应的数量。

2acd4033572562d1afa0c14c9cba9708.png

7cd6dfebe1e4fd49a88b046db88fd31e.png

delete from tb_orders where g_id = 1 #删除订单表中 商品编号为1的订单 则触发商品ID为2的商品数目恢复原来

10c85d83e5ea4d456fd3bc09d19debce.png

(3)更新订单信息,则修改对应的商品的数目的信息

对应的触发器:

8bece04d9258ea13045b1fb97edbc54a.png

数据库中数据变化:

0cfd2197283ab31e3d661c590e28c355.png

1c3f92cbeae593d5c6c88b9b737c2abe.png

update tb_orders set ordercount = 2 where g_id = 1  #更新订单表中商品id为1的订单的数目 则触发商品表中数目变化

b6ccb4f26b48d91dae2c4547e1ba0955.png

921be88f924905ef123a4668108aaf96.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值