首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 建立觸發程序完整語法與實例:AFTER INSERT 更新分類統計

     編輯:MySQL 資料庫相關知識

語法結構

CREATE TRIGGER trigger_name
trigger_time trigger_event
ON tbl_name FOR EACH ROW
trigger_stmt
  • trigger_time:BEFORE / AFTER
  • trigger_event:INSERT / UPDATE / DELETE
  • FOR EACH ROW:逐列觸發(MySQL 僅支援行級)。
  • trigger_stmt:單句或 BEGIN ... END 多句塊。

NEW / OLD 別名

需對引用欄位擁有 SELECT 權限,對 SET NEW.col = ... 需 UPDATE 權限。

限制與注意

  • 同一表、同一時間、同一事件只能建立一個觸發器(如不能有兩個 BEFORE UPDATE)。
  • 不支援外鍵級聯動作觸發(MySQL 8.0 仍限制)。
  • 需 SUPER / TRIGGER 權限。
  • INSERT ... ON DUPLICATE KEY UPDATE 會依序觸發 BEFORE INSERT、AFTER INSERT、BEFORE UPDATE、AFTER UPDATE。

實例:部落格分類文章數自動遞增

CREATE TRIGGER update_blogs
AFTER INSERT ON blogs
FOR EACH ROW
UPDATE blogcategory
SET amount = amount + 1
WHERE cid = NEW.categoryid;

效果:每插入一篇部落格,對應分類 amount 自動 +1。

查看與刪除

SHOW TRIGGERS\G
DROP TRIGGER update_blogs;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
別名適用事件含義
NEW.colINSERT, UPDATE新值(INSERT 為插入值,UPDATE 為更新後值)
OLD.colUPDATE, DELETE舊值(更新前/刪除前值)