首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL CREATE TRIGGER 語法完整指南:觸發時機、事件類型、FOR EACH ROW、權限與限制

     編輯:MySQL 綜合教學

完整語法

CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt

子句詳細說明

子句說明
trigger_name觸發器名稱,Schema 內唯一。建議:t_動作_表_時機_事件
trigger_timeBEFORE:語句執行前;AFTER:語句執行後
trigger_eventINSERT:INSERT/LOAD DATA/REPLACE 觸發
UPDATE:UPDATE 觸發
DELETE:DELETE/REPLACE 觸發
tbl_name永久表(不可 TEMPORARY 表、視圖)
FOR EACH ROW行級觸發(MySQL 僅支援行級)
trigger_stmt執行語句,多句用 BEGIN ... END 包裹

重要行為細節

  • INSERT ... ON DUPLICATE KEY UPDATE:依重鍵情況依序觸發 BEFORE INSERT、AFTER INSERT 或 BEFORE UPDATE/AFTER UPDATE。
  • REPLACE 實為 DELETE + INSERT,會觸發對應的 DELETE/INSERT 觸發器。
  • 同一表、同一 trigger_time、同一 trigger_event 只能有一個觸發器(如不能有兩個 BEFORE UPDATE)。
  • trigger_stmt 內可使用存儲程序允許的大多數語句,但不可含 START TRANSACTION/COMMIT/ROLLBACK(觸發器隱含在觸發語句的交易中)。

權限需求

  • MySQL 5.1-5.6:需 SUPER 權限。
  • MySQL 5.7+:獨立 TRIGGER 權限。

刪除觸發器

DROP TRIGGER [schema_name.]trigger_name;

查看觸發器

SHOW TRIGGERS;
SHOW CREATE TRIGGER trigger_name;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved