TRIGGER ROLLBACK上的自定义消息?

时间:2012-09-25 15:35:27

标签: sql-server rollback raiserror

我在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
  自定义消息
  消息3609,级别16,状态1,行1   交易在触发器中结束。批次已中止。

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

2 个答案:

答案 0 :(得分:0)

你好像这样写

RAISERROR ('custom message', 16, 1 )

答案 1 :(得分:0)

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