事务
事务:
保障流程的完整执行
就像银行取钱,先在你账上扣钱,然后存入别人的账上,
但是从你账上扣完钱了,突然断网了,对方没有收到钱,那么此时你的钱也没有了,,
别人的钱也没加上,为了防止此类情况的出现,就用事务。
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'--fruit表中K002库存-1
set @tran_error=@tran_error+@@ERROR --如果等于0,以上语句没错,如果不等于0,以上语句有错
update login set account=account-1 where username='wangwu'--login表中account(账户余额)-1
set @tran_error=@tran_error+@@ERROR
insert into orders values('d002','wangwu','2016-8-7') --在orders表中添加一个订单
set @tran_error=@tean_error+@@ERROR
insert into orderdetails values('d002','k002','10') --在订单详情表中添加一条数据
set @tran_error=@tean_error+@@ERROR
if @tran_error>0
begin
rollback tran
end
else
begin
commit tran
end