テーブルに追加または更新された値に基づいて値を計算し、別のテーブルに格納するトリガがテーブル(AFTER INSERT, UPDATE
)にあります。トリガロジックの始めにトランザクションをコミットします
私はトリガー内部のエラー処理と、トリガーロジック内のエラーが最初にトリガーを呼び出した元のトランザクションROLLBACK
であることをかなり読んだことがあります。
オリジナルのトランザクションをすべてのコストで保存するために(ある時点でトリガーが失敗すると仮定して)、私はこのようなことをしてコードを始めました。
-- Grab newly inserted data
SELECT *
INTO #Temp
FROM INSERTED
-- Force transaction to finish, making sure following statements don't roll it back
COMMIT TRAN
-- Continue using data stored in #Temp
UPDATE .....
SET .....
FROM #Temp
これは、私がトリガー論理に意図的なエラーを入れた場合でも、問題は、この安全ですか?