記事内に広告が含まれています。

【SQL Server】変更前の値をトリガーで操作することが出来ない話

SQL Serverのトリガーでは、Oracleのような「BEFORE INSERT ON」と言った、テーブル操作前に動作するトリガーコマンドは存在しません。

【スポンサーリンク】

SQL Serverではテーブル操作前に動作するトリガーは存在しない

まあ、マイクロソフトの公式のドキュメント見て貰えば分かる話ですが、トリガーにいくつか種類が存在しても、実態としてはアフタートリガー(After Trigger)しか存在していません。あくまでも、DML(INSERT・DELETE・UPDATE)が実行された後にトリガーが発動するため、トリガーは実行結果データに対する操作となります。

なので、QiitaでもSQL Server用のトリガーを自作している方もいらっしゃいます。

SQLServerのトリガーでOracleのBeforeを疑似的に再現する - Qiita
##概要以下記事の補足というか、タイトル部分で痛い目を見たので専用記事。そのまんま、O…

SQL Server、というかマイクロソフト製品は痒い所に手が届かないものが多いので、その隙間を埋めるのは開発者の腕にかかっていると言えます。

【スポンサーリンク】

参考リンク

トリガーの使用
CREATE TRIGGER (Transact-SQL) - SQL Server
CREATE TRIGGER ステートメントの Transact-SQL リファレンス。DML、DDL、ログオン トリガーの作成に使用されます。