第一种:只操作一张表(简单事务)
declare @error int --定认错误参数
set @error=0 --初始化参数
--开始事务
begin tran
insert into
A(a,b,c)
values('aa','bb','cc')
set @error=@error+@@error
--记录错误点
--结束事务
if(@error<>0)
begin
rollback tran
--回滚事务
end
else
begin
commit tran --提交事务
end
第二种:同时操作多表的情况,带事务名的写法
--启动事务处理
declare @tranCount int --控制事务嵌套
set @tranCount=@@trancount
if @tranCount=0
begin tran
tran_Add --tran_Add为事务名,随便取
else
save tran tran_Add --保存事务点
--定义反回值
declare @return int
set @return=1
--初始化反回值,1为成功
--添加A表
insert into
A(a,b,c)
values('aa','bb','cc')
if(@@error<>0)
begin
set @return=2 --添加A表错误返回
goto err_lab --跳到错误点回滚
end
--添加B表
insert into
B(a,b,c)
values('aa','bb','cc')
if(@@error<>0)
begin
set @return=3 --添加B表错误返回
goto err_lab --跳到错误点回滚
end
--==事务处理==
if(@tranCount=0)--如果没有错提交事务
begin
commit tran tran_Add
goto return_lab
end
err_lab:
rollback tran tran_Add
return_lab:
return @return --反回
加载中,请稍候......