SQL Server(九)——事务

事务:

保障流程的完整执行,就像银行取钱,先在你账上扣钱,然后存入别人的账上;但是从你账上扣完钱了,突然网断了,对方没有收到钱,那么此时你的钱也没了,别人的钱也没加上,事务为了防止此类情况的出现。

事务的基本格式:

begin tran --在流程开始的位置

 

if @@ERROR>0

begin  

rollback tran --回滚事务,到begin tran的位置,就当没发生过

end

else

begin  

commit tran --提交事务,都没问题,那么就一把进行提交

end

例题:购物车实例

 

begin tran --开启事务
declare @tran_error int; --存储错误
set @tran_error = 0; --默认没有错误

update Fruit set Numbers = Numbers-1 where Ids='k002'
set @tran_error = @tran_error + @@ERROR;
update Login set Account=Account-1 where UserName='wangwu'
set @tran_error = @tran_error + @@ERROR;
insert into Orders values('d002','wangwu','2016-8-7')
set @tran_error = @tran_error + @@ERROR;
insert into OrderDetails values('d002','k002',10)
set @tran_error = @tran_error + @@ERROR;


if @tran_error>0
begin
    rollback tran --回滚事务,到begin tran的位置,就当没发生过
end
else
begin
    commit tran --提交事务,都没问题,那么就一把进行提交
end
View Code

 注:例题里面用到了SQL Server中一个自带的变量——ERROR,表示若上面的语句正确,@@ERROR=0;相反不等于0.

转载于:https://www.cnblogs.com/H2921306656/p/5752349.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值