1. 程式人生 > 其它 >MySQL:MySQL 觸發器

MySQL:MySQL 觸發器

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