数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

SQL Server的怪辟:异常与孤立事务[2]


发布日期:2023年09月02日
 
SQL Server的怪辟:异常与孤立事务[2]

使用 set xact_abort 来控制部分违反约束的错误的执行过程

以下是引用片段

create table Table (a int check(a>))

go

set xact_abort on

begin tran

insert table values()

print 这里没有被执行

commit tran

go

print print ============================================== print

set xact_abort off

begin tran

insert table values()

print 这里被执行

commit tran

go

drop table table

但 set xact_abort 对于编译产生的错误确没有起作用且同样会产生孤立事务

set xact_abort on

begin tran

insert 一个不在的表 values()

print 这里没有被执行

commit tran

go

print print ============================================== print

set xact_abort off

begin tran

insert 一个不在的表 values()

print 这里没有被执行

commit tran

go

select @@trancount 当前连接的活动事务数 有两个孤立事务

if @@trancount<> rollback tran

对于sql中怪辟的各种错误和孤立事务在tsql编程中一定要注意小心孤立事务的陷阱尽量避免浪费或孤立资源Microsoft公开宣布过SQLServe下一版本Yukon将有内置异常处理语法那时可以通过代码对无法预料的错误有更好的控制

[] []

               

上一篇:SQL Server的怪辟:异常与孤立事务[1]

下一篇:SQL SERVER定时作业的设置方法[2]