MySQLのtriggerについて

MySQLなどの主なDBMSには、triggerと呼ばれるものが存在する。
triggerとは、特定のテーブルにINSERT,UPDATE,DELETEなどのメソッドを実行したときに自動で起動するものである。

使い所としては、SQLのログをテーブルで管理したいときや、あるテーブルに対して、履歴のテーブルを作りたいときに使用する。

例えば、userというテーブルを作り、それに対してuser_historyという履歴のテーブルを作るとする。
その場合、userテーブルのレコードに、UPDATEが起きた際に、UPDATE前のuserデータをuser_historyにINSERTするようなトリガを仕掛けておくことで、簡単に履歴テーブルが作れる。
たぶん、下記のようなコードになるはず。

DELIMITER $

CREATE TRIGGER trigger_name BEFORE UPDATE ON tbl_name FOR EACH ROW 
BEGIN
  -- ここで対象レコードを履歴テーブルにINSERTする処理を作る
END;
$

DELIMITER ;

シェアする

  • このエントリーをはてなブックマークに追加

フォローする