既に他人のトリガーを使用している場合は、2つのポイントで注意を引く必要があります。
FOR EACH ROW
は構文の必須部分です
あなたは何のOracleのように(一回クエリによる) 文トリガーを作成することはできません。本当の欠けている機能よりもパフォーマンスに関連する問題です
CREATE OR REPLACE
はMySQLでサポートされていません
MySQLはこの構文を許可していませんが、代わりに以下を使用します。
DELIMITER $$
DROP TRIGGER IF EXISTS myTrigger;
$$
CREATE TRIGGER myTrigger
-- ...
$$
DELIMITER ;
これはアトミックトランザクションではないことに注意してください。
CREATE
失敗した場合、古いトリガーを失いますDROP
とCREATE
間で他の操作が発生する可能性がありますLOCK TABLES myTable WRITE;
使用してLOCK TABLES myTable WRITE;
最初にデータの不一致とUNLOCK TABLES;
を回避するUNLOCK TABLES;
テーブルを解放するCREATE
後