raiserror sql server静默消息

时间:2009-05-07 07:33:11

标签: sql sql-server-2005

如何在不获取标准消息的情况下在SQL Server触发器中使用ROLLBACK TRANS?

“Msg 3609,Level 16,State 1,Line 1 交易在触发器中结束。批次已中止。“

这将返回给客户。我希望ROLLBACK能够无声地完成。我需要在触发器内实现这一点;即没有c#或.NET代码更改以捕获错误信息。

让我补充一点,这是最近添加的功能的“脏”解决方法。 当我们添加新功能时,客户端不喜欢它。而不是紧急释放代码库,我们刚刚杀死了触发器内的更新。 调用代码是在客户端应用程序中嵌入SQL - 而不是存储过程。

2 个答案:

答案 0 :(得分:1)

麻烦的是,触发器内部的回滚意味着在基础表中插入/更新或删除的行恢复原样,这意味着数据库无法执行原始程序要求它执行的操作。

您的调用代码是直接更新表,还是调用更新表的存储过程?后者为静默处理回滚提供了更多的空间。

答案 1 :(得分:1)

你想要的是INSTEAD OF触发器,它实际上对更新的行没有任何作用。