1、setXACT_ABORToff时,回滚产生错误的Transact-SQL语句,而事务将继续进行处理,(注:错误严重或者语法错误时可能回滚整个事务)
2、setXACT_ABORTON时,如果Transact-SQL语句产生运行时错误,整个事务将终止并回滚。
--创建存储过程
alter proc proc_aa_aa1
(@id int,@name varchar(255) ,@sex char(2))
as
--创建事务
begin Transaction tran_charge
--定义变量记录错误数
declare @reeSum int
set @reeSum=0
--尝试执行sql语句
begin try
insert into aa(id,name,sex) VALUES ('1','as','男')
set @reeSum=@reeSum+@@ERROR
--@@error当前一个语句遇到错误,则返回错误号,否则返回0。需要注意的是@ERROR在每一条语句执行后会被立刻重置
insert into aa1(id,name,sex) VALUES ('1','as','男女')
print @@ERROR
set @reeSum=@reeSum+@@ERROR
end try
begin catch
--打印错误信息
print '错误编号:'+convert(varchar,error_number())+'错误消息'+error_message()
print @reeSum
set @reeSum=@reeSum+@@ERROR
end catch
print '111'
print @reeSum
if(@reeSum>0)--有错误
rollback Transaction tran_charge --回滚事务
else
commit Transaction tran_charge--提交事务
--通过调用存储过程,给相应的参数,
exec proc_aa_aa1'2','1','3'
@@ROWCOUNT //返回
@@ERROR //返回错误码
insert into aa(id,name,sex) VALUES ('1','as','男')
insert into aa1(id,name,sex) VALUES ('1','as','男女')
delete from aa
delete from aa1
select * from aa
select * from aa1
您好,您的问题是:service层定义的事务可以回滚数据库吗?答案是肯定的,service层定义的事务可以回滚数据库。事务回滚是指在一个事务中,在执行完某个 *** 作之后,可以将数据库恢复到事务开始之前的状态。在service层定义的事务中,可以使用事务回滚来保证数据库的完整性和一致性。事务回滚可以有效地防止数据库中的数据发生意外的更改,从而保证数据的安全性。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)