1

我在 SQL Server 中有一个触发器,当条件发生时,我需要ROLLBACK它。问题是我需要设置自定义消息。

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

但它引发了2个错误

Msg 50100, Level 16, State 1, Procedure tU_COM_Proposta, Line 42
custom message
Msg 3609, Level 16, State 1, Line 1
事务在触发器中结束。该批次已中止。

我怎样才能让它只引发我的自定义错误,同时我需要回滚触发器的事务?

4

2 回答 2

0

你好就这样写

RAISERROR ('custom message', 16, 1 )
于 2012-09-25T22:32:42.797 回答
0

我不知道这是否能解决您的问题,但我在触发器中的语句ROLLBACK TRANSACTION之后(而不是之前)使用了,这导致插入被中止。当我在触发器语句中将严重级别从 1 更改为 16 时,触发器中创建的自定义消息开始出现在触发器外部。RAISERROR()INSERTERROR_MESSAGE()RAISERROR()

于 2013-02-27T02:41:53.087 回答