更新操作を処理するビューにトリガーがあります。MS Management Studioを使用して挿入を行うと、次のエラーが発生します。
Msg 50000, Level 16, State 10, Procedure Trigger_TempTableAttr_Lot_UpdateDelete, Line 166
Violation of UNIQUE KEY constraint 'UK_Lot_LotAccountCode'. Cannot insert duplicate key in object 'app.Lot'.
Msg 3616, Level 16, State 1, Line 1
An error was raised during trigger execution. The batch has been aborted and the user transaction, if any, has been rolled back.
これは私が私のトリガーに持っているものです:
BEGIN TRY
EXEC(@UpdateSQL)
END TRY
BEGIN CATCH
SELECT
@ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();
RAISERROR (@ErrorMessage, -- Message text.
16, -- Severity.
10 -- State.
);
RETURN
END CATCH
CREATE TRIGGER[dbo].[Trigger_TempTableAttr_Lot_UpdateDelete] ON [dbo].[TempTableAttr_Lot]
INSTEAD OF UPDATE, INSERT, DELETE
AS
BEGIN
これの最初のエラーはDataAdapterに送信されることはなく、サイレントに失敗します。DataAdapter.RowUpdatedにイベントハンドラーがありますが、この操作にエラーはありません。INSERTでもDELETEでもエラーは発生しません。
アプリケーションでエラーが発生するのを防ぐために何が起こっているのでしょうか?