什么是Sql Server事务

什么是Sql Sever事务

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

事务的性质
1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么全部不执行。
2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序 串行执行的结果相一致。
3、隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。
4、持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。

事务的作用
1.为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。
2.当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。

事务的优缺

优点:
1、把逻辑相关的操作分成了一个组;
2、在数据永久改变前,可以预览数据变化;
3、能够保证数据的读一致性。

缺点:
1.执行较慢;
2.需要较多的磁盘空间保存事务日志;
3.执行更新需要内存较多。

事务的创建
开始事务:
begin Transaction
提交事务:
commit Transaction
回滚事务:
rollback Transaction

事务的编写
举例:
现有以下表
Customers
在这里插入图片描述
Remain字段代表钱包余额,设立约束上线2000
使用sql语句小明对小熊进行钱包余额转账100
所以变动应该是
–小明100 账户-100
–小熊100 账户+100
当达小熊余额到上限2000时触发事务进行回滚

--开始事务
begin Transaction tran_Change
--定义变量,记录错误数
declare @err_nums int
set @err_nums=0
begin try
update Customers set Remain=Remain-100 where ID=1
set @err_nums=@err_nums+@@ERROR
update Customers set Remain=Remain+100 where ID=2
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_Change--回滚事务
else
commit Transaction tran_Change--提交事务
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值