MySQL:MySQL 觸發器
阿新 • • 發佈:2021-07-17
MySQL觸發器(瞭解)
1 什麼是觸發器
觸發器(trigger)是MySQL提供給程式設計師和資料分析員來保證資料完整性的一種方法,它是與表事 件相關的特殊的儲存過程,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,比如當對 一個表進行操作作(insert,delete, update)時就會啟用它執行。
簡單理解: 當我們執行一條sql語句的時候,這條sql語句的執行會自動去觸發執行其他的sql語句。
2 觸發器建立的四個要素
1. 監視地點(table)
2. 監視事件(insert/update/delete)
3. 觸發時間(before/after)
4. 觸發事件(insert/update/delete)
3 建立觸發器
1) 語法格式
delimiter $ -- 將Mysql的結束符號從 ; 改為 $,避免執行出現錯誤 CREATE TRIGGER Trigger_Name -- 觸發器名,在一個數據庫中觸發器名是唯一的 before/after(insert/update/delete) -- 觸發的時機 和 監視的事件 on table_Name -- 觸發器所在的表 for each row -- 固定寫法 叫做行觸發器, 每一行受影響,觸發事件都執行 begin -- begin和end之間寫觸發事件 end $ -- 結束標記
2) 向商品中新增一條資料
# 向商品中新增一條資料INSERT INTO goods VALUES(1,'book',40);
3) 需求: 在下訂單的時候,對應的商品的庫存量要相應的減少,賣出商品之後減少庫存量。
編寫觸發器
-- 1.修改結束標識 DELIMITER $ -- 2.建立觸發器 CREATE TRIGGER t1 -- 3.指定觸發的時機,和要監聽的表 AFTER INSERT ON orders -- 4.行觸發器 固定寫法 FOR EACH ROW -- 4.觸發後具體要執行的事件 BEGIN -- 訂單+1 庫存-1 UPDATE goods SET num = num -1 WHERE gid =1; END$
· 4) 查詢 goods表中的資料
5) 向訂單表中新增一條資料
INSERT INTO orders VALUES(1,1,25);
6) goods表中的資料隨之 -1