如何在不获取标准消息的情况下在SQL Server触发器中使用ROLLBACK TRANS?
“Msg 3609,Level 16,State 1,Line 1 交易在触发器中结束。批次已中止。“
这将返回给客户。我希望ROLLBACK能够无声地完成。我需要在触发器内实现这一点;即没有c#或.NET代码更改以捕获错误信息。
让我补充一点,这是最近添加的功能的“脏”解决方法。 当我们添加新功能时,客户端不喜欢它。而不是紧急释放代码库,我们刚刚杀死了触发器内的更新。 调用代码是在客户端应用程序中嵌入SQL - 而不是存储过程。
答案 0 :(得分:1)
麻烦的是,触发器内部的回滚意味着在基础表中插入/更新或删除的行恢复原样,这意味着数据库无法执行原始程序要求它执行的操作。
您的调用代码是直接更新表,还是调用更新表的存储过程?后者为静默处理回滚提供了更多的空间。
答案 1 :(得分:1)
你想要的是INSTEAD OF触发器,它实际上对更新的行没有任何作用。