**定義:** 針對特定表的特定事件(INSERT/UPDATE/DELETE),自動執行的 SQL 程式碼塊。
**版本:** MySQL 5.0+ 引入,5.x 系列持續完善。
CREATE TABLE data (name VARCHAR(255));
CREATE TABLE chars (count INT(10));
INSERT INTO chars (count) VALUES (0);
CREATE TRIGGER t1
AFTER INSERT ON data
FOR EACH ROW
UPDATE chars SET count = count + CHAR_LENGTH(NEW.name);
AFTER INSERT:事件觸發時機(還有 BEFORE INSERT、AFTER UPDATE 等)。FOR EACH ROW:行級觸發,每插入一行執行一次。NEW.name:引用**新插入行**的 name 欄位值。對應 OLD 可用於 UPDATE/DELETE 獲取舊值。SHOW TRIGGERS\G
-- 輸出包含:Trigger: t1, Event: INSERT, Table: data, Timing: AFTER, Statement: UPDATE ...
INSERT INTO data (name) VALUES ('Alice'); -- 5 字符
INSERT INTO data (name) VALUES ('Bob'); -- 3 字符
SELECT * FROM chars; -- count = 8
SHOW TRIGGERS [FROM db_name] [LIKE 'pattern']DROP TRIGGER [IF EXISTS] [db_name.]trigger_nameTRIGGER 權限(MySQL 5.1.6+),超級權限自動擁有。FOR EACH STATEMENT),僅行級。