2012-09-25 63 views
1

我在SQL Server中有一個觸發器,當一個條件發生時,我需要ROLLBACK它。問題是我需要設置自定義消息。TRIGGER ROLLBACK上的自定義消息?

-- This is inside an UPDATE TRIGGER -- 
if (condition) 
BEGIN 
    ROLLBACK 
    RAISERROR 50100 'custom message' 
END 

但它提出了2個錯誤

消息50100,級別16,狀態1,過程tU_COM_Proposta,行42
自定義消息
消息3609,級別16,狀態1,行
交易在觸發器中結束。該批次已被中止。

我怎樣才能得到它只提高我的自定義錯誤,同時我需要回滾觸發器的事務?

+0

您是否找到解決方案?我現在有同樣的問題 – IvanovAndrew

回答

0

嗨只是這樣寫

RAISERROR ('custom message', 16, 1) 
+0

沒有工作 它引發了錯誤,但更新已提交。即使使用SET XACT_ABORT ON –

+0

在T-sql中使用錯誤處理wtith try catch您將獲得對邏輯的更多控制 –

0

我不知道這是否解決您的問題,但我後(不是之前)在INSERT觸發RAISERROR()語句中使用ROLLBACK TRANSACTION,這引起了插入到被中止。當我在觸發器的RAISERROR()語句中將嚴重級別從1更改爲16時,觸發器中創建的自定義消息開始出現在觸發器外部的ERROR_MESSAGE()中。