CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt
| 元素 | 說明 |
|---|---|
trigger_time | BEFORE / AFTER:語句執行前/後觸發 |
trigger_event | INSERT(含 LOAD DATA/REPLACE)、UPDATE、DELETE(含 REPLACE) |
tbl_name | 必須為永久表,不能關聯 TEMPORARY 表或視圖 |
FOR EACH ROW | 行級觸發(MySQL 僅支援行級) |
trigger_stmt | 觸發執行的 SQL;多語句用 BEGIN ... END 複合語句 |
OLD.col_name:更新/刪除前的舊值。NEW.col_name:插入的新值或更新後的新值。權限要求:引用 OLD/NEW 需 SELECT 權限;SET NEW.col = ... 需 UPDATE 權限。
BEFORE UPDATE)。但可共存 BEFORE UPDATE + AFTER UPDATE 或 BEFORE INSERT + BEFORE UPDATE。INSERT ... ON DUPLICATE KEY UPDATE 會依次觸發 BEFORE INSERT、AFTER INSERT 或 BEFORE UPDATE/AFTER UPDATE(視是否有重複鍵)。SUPER 權限。CREATE TRIGGER update_blogs AFTER INSERT ON blogs FOR EACH ROW UPDATE blogcategory SET amount = amount + 1 WHERE cid = NEW.categoryid;
含義:blogs 表發生 INSERT/LOAD DATA/REPLACE 時,自動將對應分類 amount 加 1。