Mysqlトリガの一般的な操作について
:
CREATE TRIGGER
ON
FOR EACH ROW
;
トリガーの作成:
CREATE TRIGGER tr_seq1 AFTER INSERT on table1 FOR EACH ROW BEGIN DECLARE cn INTEGER; SELECT COUNT(galary_id) INTO cn from table2; IF cn!=0 THEN UPDATE table2 set table2.num=table2.num+2; ELSE INSERT INTO table1 VALUES(1,1,1); END IF; END;
上の内容は以下のように解釈される:記号分割を使用して、中間に位置する内容が1つの全体であることを示して、単に記号分割ではありません;tr_という名前を作成seq 1のトリガ;トリガトリガトリガイベントは、table 2にデータを挿入するにはトリガするしかない.各行に有効です.具体的な論理を開始する.変数cnを宣言します.タイプはINTEGERです.table 1のデータ数をクエリーし、変数cnに値を付与する.変数cnの値が0に等しくないか否かを判断する.上記の条件を満たすと、データベース内のnumの値を更新し、元のベースに2を追加します.そうでなければtable 1にデータを挿入する.具体的な論理終了区切り記号の末尾;分割子は末尾を宣言します.
ここで、トリガ名パラメータは、作成するトリガの名前を指します.
BEFOREパラメータとAFTERパラメータは、イベントの前または後に実行がトリガーされる時間を指定します.
FOR EACH ROWは、いずれかのレコード上の動作がトリガイベントを満たすとトリガがトリガーされることを示す
クエリー・トリガー:
testライブラリに既存のトリガをクエリーする場合は、次のように書きます.
SHOW TRIGGERS FROM database
特に、テーブル名ではなくライブラリ名です.
トリガの詳細をクエリーする場合は、次のようなクエリー文を使用します.
SHOW CREATE TRIGGER tr_seq1
トリガーの削除:
トリガが無効になった場合は、リソースの消費を減らすために削除する必要がある場合があります.
DROP TRIGGER ;
一般的に使われているのは、削除する前に判断して、存在するかどうかを判断すると、次のようになります.
DROP TRIGGER IF EXISTS ;
1つのテーブルに複数のトリガを作成し、実行時に指定した順序でトリガする必要がある場合.
トリガの順序を変更するには、
FOR EACH ROW
句の後にFOLLOWS
またはPRECEDES
を指定する必要があります.この2つの言葉の説明を見てみましょう.FOLLOWS
PRECEDES
:
DELIMITER $$ CREATE TRIGGER trigger_name [BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON table_name FOR EACH ROW [FOLLOWS|PRECEDES] existing_trigger_name BEGIN … END$$
足りないところは、突っ込みを歓迎します!