Developer

【SQL基礎】トリガーの作成part4/トリガーの削除
2021.09.30
Lv1

【SQL基礎】トリガーの作成part4/トリガーの削除

これまでのpart1part2part3ではトリガーの作成方法を説明しました。
トリガー作成についての基本事項がわからない方は先に前回までの記事をご覧ください。
本記事では、引き続きトリガーの作成方法と、作成したトリガーを削除する方法について説明します。

トリガーの概要について知りたい方はこちら


OLDとNEW

トリガーの処理の際、テーブルに変更が入る前のデータや変更が入った後のデータを使用することができます。

変更前のデータはOLD.カラム名、変更後のデータはNEW.カラム名で使用できます。

INSERTトリガーの場合は、データが新しく追加されるためNEWのデータを使用できます。

UPDATEトリガーの場合は、更新前のデータと更新後のデータの二つが存在するためOLDのデータ、NEWのデータを使用できます。

DELETEトリガーの場合は、削除前のデータが存在するためOLDのデータを使用できます。


OLDとNEWの例

具体例で確認していきましょう。

注文テーブル(orders)と更新履歴テーブル(update_history)を使用します。


まずはorder_updateというトリガーを作成します。ordersテーブルが更新されたとき、update_historyテーブルにデータを挿入するトリガーです。

挿入する値として更新前のitemカラムのデータ(赤枠)と更新後のitemカラムのデータ(青枠)を使用しています。

注文テーブルを更新して動作を確認します。

注文テーブルのitemカラムに存在する「ぶどう」を「いちご」に書き換えました。

更新履歴テーブルを確認すると、データ更新前の「ぶどう」と更新後の「いちご」が挿入されているのがわかります。


トリガーの削除

これまで複数記事にわたり、トリガーの作成について説明してきました。

最後にトリガーの削除の方法を紹介します。

トリガーを削除する際は、以下のように記述します。

DROP TRIGGER トリガー名;


トリガー削除の例

まず、現在登録されているトリガーを確認します。

SHOW TRIGGERSを実行すると、order_insertトリガーとorder_updateトリガーが登録されていることがわかります。

DROP TRIGGERでorder_updateトリガーを削除します。

改めてSHOW TRIGGERSを実行すると削除されたことが確認できます。


学習のポイント

・変更のあったデータをトリガーの処理内で使用するときは、OLD.カラム名、NEW.カラム名で指定する。

・トリガーを削除するときは、DROP TRIGGERを実行する。


練習問題

問、以下のようなordersテーブルがあります。このテーブルにINSERTトリガーを作成するとき、トリガーの処理内で使用できる値は次のうちどれでしょうか。

①NEW.order_id
②OLD.order_id
③NEW.item
④OLD.item
⑤NEW.みかん
⑥OLD.ぶどう

答え

①と③

INSERTトリガーでは、新しく追加されたデータを参照可能。

INSERTの際には古いデータは存在しないためOLDによるデータ参照はできない。②と④は誤り。

OLD、NEWはカラム名を指定することで参照できる。⑤と⑥は誤り。

 

連載目次リンク

SQL基礎 連載目次

関連する連載リンク

SQL練習問題 一覧まとめ