使用 RAISERROR 的 SQL 语句终止

标签 sql sql-server-2005 triggers raiserror

(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/

相关文章:

sql - 存储过程及其使用的表

mysql - 如何通过网络从sql server导出或导入sql server数据库到mysql server

sql-server-2005 - 触发器是否可以找到修改数据的存储过程的名称?

sql-server - SQL Server 中的表历史触发器?

sql - 如何在触发器调用的过程中使用 COMMIT

MySQL - 选择,加入

MySQL 获取不符合某些条件的行

sql-server - 更改列约束 null/not null = rowguid 复制错误

sql - 如何从数据库文本字段中删除html标签

mysql - 我真的不能编辑 MySQL 触发器,我必须删除它并创建一个新触发器吗?