Allegro!

JavaやIT系小ネタ、趣味の話まで。

【SQLserver】トリガーについて

こんにちは、管理人のPaZooです。

トリガーとは、何かのイベントをきっかけに実行される特殊なストアドプロシージャです。

SQLserverのトリガーには、ログオントリガー、DDLトリガー、DMLトリガーの3種類があります。

今回は、トリガーについて調べてみました。

ログオントリガー

ログオントリガーは、ログオン時にユーザーセッションが確立される時に実行されます。

例えば、ログオントリガーを使って「既にセッションが確立されているユーザーが、他のセッションでログオンしようとした場合は拒否する」というようなことが可能です。

DDLトリガー

DDL(Data Definition Language)トリガーは、CREATE・ALTER・DROPステートメントのようなDDLイベントと呼ばれるデータベースのスキーマを変更するようなイベントをきっかけに実行されます。

DMLトリガー

DML(Data Manipulation Language)トリガーは、テーブルやビューに対してINSERTやUPDATE・DELETEステートメントのようなデータの挿入・変更・削除などが起こった時に実行されます。

トリガーを起こしたステートメントと同じトランザクションとして扱われるため、トリガー内でエラーを起こすことによりトランザクションロールバックさせることもできます。

DMLトリガーを使って、データの変更履歴を残したり特定のカラムに対して変更された時に、他のテーブルの値を更新するなどの追加の処理をしたりすることが可能です。

また、INSTEAD OFを指定することで、元の処理の代わりに別の処理をさせることも可能です。

DMLトリガーについては下記記事でご紹介しておりますので、ぜひご覧ください!

(作成中です)