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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM