什么是事务?
事务就是一个绑定在一起逻辑单元的Sq语句操作,由4个属性组成简称ACID(原子性、一致性、隔离性和持久性),如果任何一个语句操作失败,那么整个操作就会失败,并且回滚到操作前的状态。
原子性
在修改数据时,要么全部执行,要么全部不执行
一致性
事务在完成操作状态时,必须所有数据都是相同状态。事务结束时所有内部数据结构必须全部是正确的状态。
隔离性
在执行当前事务的修改操作时,必须与其他任何事务的修改操作隔离。
持久性
事务完成操作之后,对数据的影响是永久性的。
为什么使用事务
事务是帮助数据库维护数据的一致性,对数据的影响是永久性和保持一致性的。
事务的运用
在数据库中创建一个名为countt的表
定义一个变量,记录错误数
declare @error_nums int
set @error_nums=0
使用事务`
--有转账功能为例使用事务
--ID为1的向ID为2的转账10元
--开始事务
begin transaction tran_change
begin try
update countt set Remain=Remain-10 where id=1
--@@ERROR当执行成功时返回0,执行错误时返回错误号
set @error_nums=@error_nums+@@ERROR
update countt set Remain=Remain+10 where id=2
set @error_nums=@error_nums+@@ERROR
end try
begin catch
set @error_nums=@error_nums+1
print '错误异常:'+error_number()+',错误消息'+error_message()
end catch
if(@error_nums>0)--表示前面有错误
--rollback回滚
rollback transaction tran_change
else
--commit执行事务
commit transaction tran_change
ID为1的向ID为2的转账10元