SQL Server のトリガー
SQL Server のトリガー
トリガーとは、何かのイベントをきっかけに実行されるストアドプロシージャのようなものです。
SQL Server のトリガーには、ログオントリガー、DDL トリガー、DML トリガーの3種類があります。
ログオントリガー
ログオントリガーは、その名の通り、ログオン時に、ユーザーセッションが確立される時に実行されます。
例えば、ログオントリガーを使って 「 既にセッションが確立されているユーザーが、他のセッションでログオンしようとした場合は拒否する 」 というようなことができます。
DDL トリガー
DDL (data definition language) トリガーは、CREATE・ALTER・DROP ステートメントのような、DDL イベントと呼ばれるデータベースのスキーマを変更するようなイベントをきっかけに実行されます。
例えば DLL トリガーを使うと、データベースのスキーマ変更を防いだり、データベーススキーマの変更記録を残したりすることができます。
DML トリガー
DML (data manipulation language) トリガーは、テーブルやビューに対して、INSERT・UPDATE・DELETE ステートメントのような、データの挿入・変更・削除等が起こった時に実行されます。
トリガーを起こしたステートメントと同じトランザクションとして扱われるので、トリガー内でエラーを起こすことによって、トランザクションをロールバックさせることもできます。
DML トリガーを使って、データの変更履歴を残したり、特定のカラムの値が変更された時に、他のテーブルの値も更新する等の追加の処理をしたりすることが可能です。
また、INSTEAD OF を指定することで、元の処理の代わりに別の処理をさせることも可能です。
T-SQL 入門 では、システム開発でよく使われる 「 DML トリガー 」 について取り上げます。