sql-server - SQL Server 异常处理
问题描述
我试图了解TRY-CATCH的确切含义是什么, 它不会捕获发生在同一范围内的编译错误。
我目前正在尝试在 SQL Server 中设置异常处理,并且多次遇到此语句,但不太明白它的含义。我注意到,如果我有一个INSERT语句,则异常处理适用于PRIMARY KEY 约束错误,但它似乎不适用于包含额外列的INSERT语句。
解决方案
它似乎不适用于包含额外列的 INSERT 语句。
对,因为 TRY-CATCH 不会捕获发生在同一范围内的编译错误。
如果您的编译错误发生在嵌套范围内,您的 catch 块将运行。
这是行为的一个简单示例:
create table t(id int)
go
begin try
insert into t(id) values (1,2)
end try
begin catch
select concat('catch block ', error_message())
end catch
go
begin try
exec ('insert into t(id) values (1,2)');
end try
begin catch
select concat('catch block ', error_message())
end catch
推荐阅读
- r - 使用ggplot2在一个图中组合多个数据框
- r - 在 Rstudio 中安装 keras
- scala - 如何从 scala TypeTag 获取通用的简单类名?
- istio - 如何让 ext_authz envoy 过滤器在 istio 集群上工作?
- c# - EntityFrameWork核心多对多关系错误
- github - @github.com 在提交时附在我的电子邮件中。为什么?
- c# - NLog 不包含过滤器似乎不起作用
- https - 通过 https 的 Cloud Foundry 容器到容器网络
- javascript - 在给定宽度、高度、x 和 y 的情况下查找框的角
- javascript - PHP 不解码使用 Javascript 创建的 JSON 对象。错误总是返回 4