-[事务]
/*
定义:
事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作
创建事务语法:
开始事务:begin transaction 或者 begin tran
提交事务:commit transaction 或者 commit tran
回滚(撤销)事务:rollback transaction 或者 rollback tran
事务结束标志:
事务提交或回滚
特性:
1)原子性(Atomicity):
事务是一个完整的操作,事务的各元素是不可分割,要么全部成功的执行,
要么全部撤消操作,事务的单元不可能出现只有部分成功的现象
2)一致性(Consistency):
事务完成前后,数据必须保持完全一致的状态
3)隔离性(Isolation):
事务是相对独立的,一个事务对数据进行修改时,其他事务是不能修改的
4)持久性(Durability):
use stuDB
go
select * from bank
go
--转帐(张三转帐1000给李四)
update bank set currentMoney=currentMoney-1000 where customerName='张三'
update bank set currentMoney=currentMoney+1000 where customerName='李四'
print '转帐后的金额如下:'
select * from bank
----------------------------------------------------------------------------
--转帐失败 数据回滚
update bank set currentMoney=currentMoney-1000 where customerName='李四'
select * from bank
begin tran
declare @errorSum int
set @errorSum=0
update bank set currentMoney=currentMoney-1000 where customerName='张三'
select @errorSum=@errorSum+@@error
update bank set currentMoney=currentMoney+1000 where customerName='李四'
select @errorSum=@errorSum+@@error
if (@errorSum<>0)
begin
print '转帐失败``当前系统忙```'
rollback transaction
end
else
begin
print '转帐成功'
commit transaction
end
select * from bank
----------------------------------------------------------------------------
--转帐成功 数据提交
--模拟转帐500
begin tran
declare @errorSum int
set @errorSum=0
update bank set currentMoney=currentMoney-500 where customerName='张三'
select @errorSum=@errorSum+@@error
update bank set currentMoney=currentMoney+500 where customerName='李四'
select @errorSum=@errorSum+@@error
if (@errorSum<>0)
begin
print '转帐失败``当前系统忙```'
rollback transaction
end
else
begin
print '转帐成功'
commit transaction
end
select * from bank