SQLSERVER事务的使⽤(tran)
sql server事务的使⽤是为了确保数据的⼀致性。
通常写法
begin tran
--sql 语句1
--sql 语句2
--sql 语句3
commit tran
上⾯写法存在隐患,当操作(增删改)是由null引发的错误时,事务会跳过错误继续执⾏正常的语句。例如:
--创建表Student
create table Student(Name nvarchar(20) not null)
--建⽴事务
begin tran
inserted into Student(Name) values (null)
inserted into Student(Name) values ('⼩札')
inserted into Student(Name) values (null)
commit tran
--由null引发的错误,insert,delete,update都会跳过错误继续执⾏
上⾯结果会多⼀条数据为“⼩札”。为了避免了这样的问题:
有三种⽅法:其中@@error,@@trancount是全局变量,只要发⽣错误,@@error不等于0,只要执⾏⼀次事务,@@trancount就+1,回滚会变为0。sqlserver备份表语句
【⽅法⼀】:xact_abort on/off on:开启,事务⼀旦出问题,全部回滚 off:关闭,不检查事务是否发⽣错误。
set xact_abort on
begin tran
--sql语句1
--sql语句2
--sql语句3
commit
【⽅法⼆】:每条操作语句后⾯判断是否回滚。
begin tran
--sql语句1
if@@error<>0
begin
rollback tran
return --这⾥除了return跳出,也可以使⽤goto+标签跳出事务
end
--sql语句2
if@@error<>0
begin
rollback tran
return
end
commit tran
【⽅法三】:try catch
begin tran
begin try
--sql语句1
--sql语句2
--sql语句3
end try
begin catch
if@@trancount>0
rollback tran
end catch
if@@trancount>0
commit tran
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论