SQL ServerとOracleのトリガーの違い

  • 2012.04.05 Thursday
  • 13:43
・Oracleには、トリガで利用できるホスト変数(:NEWと:OLD)がある。
 →これは、対象となる行の変更前後の値を参照することができる変数である。
  このホスト変数は、以下のように利用する。
   変更後の値を利用したい場合 … :NEW.列名
   変更前の値を利用したい場合 … :OLD.列名
・DELETEステートメントの場合、「:OLD」を利用する。
 →変更後(既存)のデータは存在しないため、:OLDで変更前の値を取得する。
・INSERTステートメントの場合、「:NEW」を利用する。
 →変更前(既存)のデータは存在しないため、:NEWで新しい値を取得する。
・ホスト変数は、Oracle特有のものである。
 他のDBMSでは、変更前後のデータを格納する特殊なテーブルが用意されている。
 この特殊なテーブルを参照することになる。

・SQL Serverでは、以下のようなテーブルを参照する。
 1.INSERTトリガの場合、INSERTEDテーブルに追加した行のコピーが保持される。
 2.DELETEトリガの場合、DELETEDテーブルに削除した行のコピーが保持される。
 3.UPDATEトリガの場合、INSERTEDテーブルに変更後のデータ、DELETEDテーブルに変更前のデータが保持される。
コメント
コメントする








    
この記事のトラックバックURL
トラックバック