(SQL 2005)
raiserror 是否有可能终止存储过程。
例如,在一个大型系统中,我们有一个不希望输入到特定列中的值。在更新触发器中,如果你写:
如果存在(选择 * 从插入的地方 testcol = 7)
开始
raiseerror('我的自定义错误', 16, 1)
结尾
更新信息仍然适用。
但是如果你跑
如果存在(选择 * 从插入的地方 testcol = 7)
开始
选择 1/0
结尾
抛出一个除以 0 的错误,实际上终止了更新。
有什么办法可以用 raiseerror 做到这一点,这样我就可以获得自定义错误消息吗?
最佳答案
在触发器中,发出 ROLLBACK、RAISERROR 和 RETURN。
见 Error Handling in SQL Server - Trigger Context by Erland Sommarskog
关于使用 RAISERROR 的 SQL 语句终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1239291/