Looking for mysql Answers? Try Ask4KnowledgeBase
Looking for mysql Keywords? Try Ask4Keywords

MySQLトリガー


構文

  • CREATE [DEFINER = {ユーザー| CURRENT_USER}] TRIGGER trigger_name trigger_time trigger_event各行のtbl_nameを指定します[trigger_order] trigger_body
  • trigger_time:{BEFORE |後に}
  • trigger_event:{INSERT |更新| DELETE}
  • trigger_order:{FOLLOWS | PRECEDES} other_trigger_name

備考

既に他人のトリガーを使用している場合は、2つのポイントで注意を引く必要があります。

行ごとに

FOR EACH ROWは構文の必須部分です

あなたは何のOracleのように(一回クエリによる) 文トリガーを作成することはできません。本当の欠けている機能よりもパフォーマンスに関連する問題です

トリガーの作成または置換

CREATE OR REPLACEはMySQLでサポートされていません

MySQLはこの構文を許可していませんが、代わりに以下を使用します。

DELIMITER $$

DROP TRIGGER IF EXISTS myTrigger;
$$
CREATE TRIGGER myTrigger
-- ...

$$
DELIMITER ;

これはアトミックトランザクションでないことに注意してください。

  • CREATE失敗した場合、古いトリガーを失います
  • 重い負荷では、 DROPCREATE間で他の操作が発生する可能性がありますLOCK TABLES myTable WRITE;使用してLOCK TABLES myTable WRITE;最初にデータの不一致とUNLOCK TABLES;を回避するUNLOCK TABLES;テーブルを解放するCREATE

トリガー 関連する例