2011-07-28 19 views
0

UPDATEまたはINSERTのいずれかでトリガーするMySQLトリガーを作成する方法はありますか?INSERTまたはUPDATEのいずれかでトリガーするMySQLトリガー?

明らか
CREATE TRIGGER t_apps_affected BEFORE INSERT OR UPDATE ...

のようなもの、上記では動作しません。したがって、2つの別個のトリガーを作成せずにすべての回避策ですか? 別のテーブルでランニングカウンタを更新するには、これが必要です。

答えて

3

残念ながら、短縮形はありません。イベントごとに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構文」を参照してください。

3

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; 
関連する問題