TRIGGERS
如果你已在其他 DB 上使用觸發器,則需要引起注意的兩點:
對於每一行
FOR EACH ROW
是語法的強制部分
你不能像 Oracle 那樣建立一個語句觸發器(一次通過查詢)。這是一個與效能相關的問題,而不是真正缺失的功能
建立或替換觸發器
MySQL 不支援 CREATE OR REPLACE
MySQL 不允許這種語法,而是使用以下內容:
DELIMITER $$
DROP TRIGGER IF EXISTS myTrigger;
$$
CREATE TRIGGER myTrigger
-- ...
$$
DELIMITER ;
小心,這不是原子事務 :
- 如果
CREATE
失敗,你將失去舊觸發器 - 在過載,其他操作可以發生在
DROP
和CREATE
之間,首先使用LOCK TABLES myTable WRITE;
來避免資料不一致和UNLOCK TABLES;
之後CREATE
釋放表