事务

什么是事务?

事务就是被绑定在一起作为一个逻辑工作单元的SQL语句组,如果任何一个语句操作失败那么整个操作就被失败,进而回滚到操作前状态,或者是上个节点。为了确保要么执行,要么不执行,就可以使用事务。要将一组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。

为什么要使用事务?

使用事务可以方便我们在添加数据是,出错而导致数据的混乱,所以我们在这时候就可以使用事务来回滚到最开始的操作之前,从而不让数据变得混乱。

列子:

我们以转账为例子
当我们转账给别人时,当我们已经把钱转去处,但对方没有收到时,这个时候会将我们的钱返回到我们的账户上。
现有一个表 Books 字段ID 和 Remain

这里我们用到之前的存储过程 与 事务结合做一个类似转账得程序

create proc pr_Charge --创建存储过程
(
 @idin int, --转入账号
 @idout int, --转出账号
 @moeny int --转出金额
)
as
begin transaction tran_Charge --开始事务
declare @err_nums int
set @err_nums=0
begin try 
update Books set Remain=Remain+@moeny where id=@idin
set @err_nums=@err_nums+@@ERROR
update Books set Remain=Remain-@moeny where id=@idout
set @err_nums=@err_nums+@@ERROR
end try
begin catch 
print '错误编号'+convert(varchar,error_number())+'错误消息'+error_message()
set @err_nums=@err_nums+1
end catch
if(@err_nums>0)
rollback transaction tran_Charge --回滚
else
commit transaction tran_Charge --提交

execute pr_Charge 6,6,200 --执行存储过程

select * from Books --查询结果

总结:

事务可以方便我们在程序出错时,自动帮我们返回到操作数据之前。
让我们不用再去修改数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值