MySQLでトリガーをSHOW・DROPする、CREATEはまだ空欄

  • MySQL
  • SQL
  • Database

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

トリガー周りのコマンドをメモしておく。SHOWとDROPは確認済みだけど、CREATEは中身をまだ決めてないので構文だけ載せておく。

トリガー一覧を確認する(SHOW TRIGGERS)

SHOW TRIGGERS;

これで現在のデータベースに登録されてるトリガーが全部見れる。特定のデータベースやテーブルに絞りたい場合は以下でも書ける。

SHOW TRIGGERS FROM db_name LIKE 'pattern';

トリガーを作る(CREATE TRIGGER)※中身は未定

まだ具体的な処理内容を決めてないので実際には作ってない。MySQLの基本構文だけ置いておく。

DELIMITER $$
CREATE TRIGGER trg_example_before_insert
BEFORE INSERT ON example_table
FOR EACH ROW
BEGIN
SET NEW.updated_at = NOW();
END$$
DELIMITER ;

タイミングはBEFOREかAFTER、イベントはINSERT・UPDATE・DELETEのどれか。MySQLは行単位トリガーのみで、FOR EACH ROWは省略できない。本文が複数ステートメントになるならDELIMITERを変える必要がある。

実際に何をやらせるかが決まったら、この部分は書き換える。

トリガーを消す(DROP TRIGGER)

DROP TRIGGER <trigger-name>;

これでも動くけど、正式には以下の書き方ができる。

DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name;

IF EXISTSを付けとくと、存在しないトリガーを消そうとしたときのエラーを避けられる。スキーマ名を省略するとカレントデータベースが対象になる。