- PR -

トリガーで実行時にエラーになった場合のトランザクションはどうなるのでしょうか?

1
投稿者投稿内容
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 2007-11-27 10:50
いつもお世話になります。SQLServerのトリガーについて教えて下さい。
現在、トリガーを利用して次のような処理を作成しようとしています。

  1. Aテーブルを削除する
  2. 削除トリガーが実行されてAテーブルの削除情報をBテーブルに追加する

この場合、もしBテーブルにデータを追加している際にエラーになった場合に次の1,2のどちらになるのでしょうか?

  1. Aテーブルの削除処理は実行され、Bテーブルの追加処理は実行されない
  2. Aテーブル,Bテーブル共にロールバックされて処理は実行されていないことになる

私がテスト的にやっている限りでは、1の「Aテーブルの削除処理は実行され、Bテーブルの追加処理は実行されない」状態になっていると思われます。
まず、この認識は正しいでしょうか?仮にその場合、2の「Aテーブル,Bテーブル共にロールバックされて処理は実行されていないことになる」にはできないでしょうか?

よろしくご教授下さい。


よっしー
大ベテラン
会議室デビュー日: 2007/05/17
投稿数: 143
投稿日時: 2007-11-27 13:14
試してみましたが、2でした。
ラララ
ベテラン
会議室デビュー日: 2004/02/04
投稿数: 66
投稿日時: 2007-12-02 01:05
普通に考えると2のはずです。

ただし、2005では、エラートラップができたはずなので、
トリガー内でエラートラップにより、トリガー自体の例外エラーが
発生しない状況になるのであれば、「1」になると思います。



[ メッセージ編集済み 編集者: ラララ 編集日時 2007-12-02 01:06 ]
1

スキルアップ/キャリアアップ(JOB@IT)