假设我有多个 SQL 来更改 SP 中数据库中的数据。我在开始时创建一个事务,然后在最后提交或回滚事务。我所做的是这样的:
declare @HasError bit
BEGIN TRANSACTION
set @HasError = 0;
Insert into Table1....
if(@@ERROR>0)
set @HasError = 1;
Insert into Table2....
if(@@ERROR>0)
set @HasError = 1;
Insert into Table3....
if(@@ERROR>0)
set @HasError = 1;
...
if @HasError = 1
Rollback;
else
Commit;
它工作正常。但是需要为每个 U/I/D sql 捕获错误。无论如何我可以知道最后是否只有一段代码有任何错误,例如
if(@@ERROR>0)
set @HasError = 1;
if @HasError = 1
Rollback;
else
Commit;
不需要对每个 U/I/D sql 做这么多的错误检测吗?