<-- 標示重點行INSERT/UPDATE/DELETE觸發器繼承函數限制:不可存取表 (無 SELECT/INSERT/UPDATE/DELETE 等表操作),但可使用:
BEGIN ... ENDIF, CASE, WHILE, LOOP, REPEAT, LEAVE, ITERATEDECLARE、指派 SETCREATE TRIGGER <觸發器名稱>
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON <表名稱>
FOR EACH ROW
<觸發器SQL語句>
表名_觸發時機_事件,如 t26_bu (表 t26, BEFORE UPDATE)BEFORE:事件前執行 (可修改 NEW 值、阻止操作)AFTER:事件後執行 (不可修改 NEW,可讀取 OLD/NEW)INSERT、UPDATE、DELETEIF/CASE 分流FOR EACH ROW:逐列觸發 (標準 SQL 行級觸發器)。MySQL 5.0 僅支援行級,不支援陳述式級 (FOR EACH STATEMENT)。
| 事件 | OLD | NEW |
|---|---|---|
| INSERT | 不可用 | 新插入的列值 (BEFORE 可修改) |
| UPDATE | 更新前的列值 | 更新後的列值 (BEFORE 可修改) |
| DELETE | 被刪除的列值 | 不可用 |
存取方式:NEW.col_name、OLD.col_name
CREATE TRIGGER t_log_bi
BEFORE INSERT ON log_table
FOR EACH ROW
SET NEW.created_at = NOW();
觸發器相對較新,可能存在缺陷。嚴禁在重要生產資料庫直接使用,請先在測試環境充分驗證。