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)當我們向訂單表中插入數據時,會將對應的商品的數目減少對應的數量,而不用手動去更新商品的數目。
初始的商品的數目:
1 insert into tb_orders(g_id,ordercount) values(1,2)2 #向訂單表中給商品編號為1的插入一條記錄,則對應的商品ID為1的數目減23 #商品的數目
(2)當我們刪除訂單表中數據時,會將對應的商品的數目恢復到對應的數量。
delete from tb_orders where g_id = 1 #刪除訂單表中 商品編號為1的訂單 則觸發商品ID為2的商品數目恢復原來
(3)更新訂單信息,則修改對應的商品的數目的信息
對應的觸發器:
數據庫中數據變化:
update tb_orders set ordercount =?2?where g_id =?1??#更新訂單表中商品id為1的訂單的數目 則觸發商品表中數目變化
總結
以上是生活随笔為你收集整理的mysql触发器预约实例_Mysql触发器实例分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 添加程序图标到我的电脑
- 下一篇: pyqt5——QImage与QPixma