UPDATEまたはINSERTのいずれかでトリガーするMySQLトリガーを作成する方法はありますか?INSERTまたはUPDATEのいずれかでトリガーするMySQLトリガー?
明らかCREATE TRIGGER t_apps_affected BEFORE INSERT OR UPDATE ...
のようなもの、上記では動作しません。したがって、2つの別個のトリガーを作成せずにすべての回避策ですか? 別のテーブルでランニングカウンタを更新するには、これが必要です。
UPDATEまたはINSERTのいずれかでトリガーするMySQLトリガーを作成する方法はありますか?INSERTまたはUPDATEのいずれかでトリガーするMySQLトリガー?
明らかCREATE TRIGGER t_apps_affected BEFORE INSERT OR UPDATE ...
のようなもの、上記では動作しません。したがって、2つの別個のトリガーを作成せずにすべての回避策ですか? 別のテーブルでランニングカウンタを更新するには、これが必要です。
残念ながら、短縮形はありません。イベントごとに1つずつ、複数のトリガーを作成する必要があります。
docは言う:
trigger_event
はトリガを有効化するステートメントの種類を示します。INSERT:trigger_eventではは、次のできる新しい行が テーブルに挿入されるたびに、トリガーが起動されます。たとえば、INSERT、LOAD DATA、およびREPLACE ステートメントを使用します。
UPDATE:行が変更されるたびにトリガーがアクティブになります。 の例では、UPDATEステートメントを使用します。
DELETE:トリガーは、 テーブルから行が削除されるたびにアクティブになります。たとえば、DELETE文とREPLACE文を使用します。ただし、 テーブルのDROP TABLE文およびTRUNCATE TABLE文は、DELETEを使用しないため、 このトリガを有効にしません。パーティションを削除すると、 はDELETEトリガーもアクティブにしません。第12.1.27節、 「TRUNCATE TABLE構文」を参照してください。
trigger on multiple eventsを入力することはできませんが、2つのトリガーを定義して別のストアドプロシージャを呼び出し、コミットするコードの量を減らすことができます。
CALL update_counter();
のような別のトリガーを作成して、すべての実際の作業を手順に入れてください。トリガーは単純なものになります
CREATE TRIGGER t_apps_affected BEFORE INSERT ON table
FOR EACH ROW
BEGIN
CALL update_counter();
END;