对,使用 SET XACT_ABORT ON 才能帮你自动回滚事务,这方面探究的文章比较少。我的经验是这个选项非常非常的重要。-------------------------- http://chinadba.cn 深圳骄子数据库服务网 最具实战经验的数据库优化、管理、设计、培训。
可以用@@error探测最后执行的 Transact-SQL 语句的错误代码,如果有错误,rollback tran, 没有错误的话commit tran 例如: BEGIN TRAN INSERT INTO t2 VALUES (1) if @@error<>0 begin rollback tran return end INSERT INTO t2 VALUES (2) /* Foreign key error */ if @@error<>0 begin rollback tran return end INSERT INTO t2 VALUES (3) if @@error<>0 rollback tran else COMMIT TRAN
如果用rllback tran 就得象楼上写得每个判断下,代码是不是太复杂了
--加:SET XACT_ABORT ON 回滚事务中的所有操作 SET XACT_ABORT OFF 回滚事务中的部分操作(出错处)
SET XACT_ABORT ON 才能帮你自动回滚事务,这方面探究的文章比较少。我的经验是这个选项非常非常的重要。--------------------------
http://chinadba.cn
深圳骄子数据库服务网
最具实战经验的数据库优化、管理、设计、培训。
没有错误的话commit tran
例如:
BEGIN TRAN
INSERT INTO t2 VALUES (1)
if @@error<>0
begin
rollback tran
return
end
INSERT INTO t2 VALUES (2) /* Foreign key error */
if @@error<>0
begin
rollback tran
return
end
INSERT INTO t2 VALUES (3)
if @@error<>0
rollback tran
else
COMMIT TRAN
SET XACT_ABORT OFF 回滚事务中的部分操作(出错处)