Transaction 事务

一、是什么?

    一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。

二、为什么要用?

    恢复(回滚)并发控制的基本单位。同时访问或修改一条记录的时候,此时为并发问题。该如何解决?

三、事务特性: 原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性

    原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

    一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

    隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

    持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

四、java spring中也实现了事务。如果用事务进行注解了,将在事务管理器中执行。

五、事务实践:

1.事务
  1.1隐式事务是指每一条数据操作语句都自动地成为一个事务,事务的开始是隐式的,事务的结束有明确的
标记。
 1.2.显式事务是指有显式的开始和结束标记的事务,每个事务都有显式的开始和结束标记。
 1.3.自动事务是系统自动默认的,开始和结束不用标记。
2.并发控制
 2.1. 数据库系统一个明显的特点是多个用户共享数据库资源,尤其是多个用户可以同时存取相同数据。
   串行控制:如果事务是顺序执行的,即一个事务完成之后,再开始另一个事务
   并行控制:如果DBMS可以同时接受多个事务,并且这些事务在时间上可以重叠执行。
3.并发控制概述
  3.1事务是并发控制的基本单位,保证事务ACID的特性是事务处理的重要任务,而并发操作有可能会破坏其ACID特性。
  DBMS并发控制机制的责任:
对并发操作进行正确调度,保证事务的隔离性更一般,确保数据库的一致性。

六、例

  BEGIN TRANSACTION
  /*--定义变量,用于累计事务执行过程中的错误--*/
  DECLARE @errorSum INT
  SET @errorSum=0 --初始化为0,即无错误
  /*--转账:张三的账户少1000元,李四的账户多1000元*/
  UPDATEbankSET currentMoney=currentMoney-1000
  WHERE customerName='张三'
  SET @errorSum=@errorSum+@@error
  UPDATE bank SET currentMoney=currentMoney+1000
  WHERE customerName='李四'
  SET @errorSum=@errorSum+@@error --累计是否有错误

   IF @errorSum<>0 --如果有错误
  BEGIN
  print '交易失败,回滚事务'
  ROLLBACK TRANSACTION
  END?
  ELSE
  BEGIN
  print '交易成功,提交事务,写入硬盘,永久的保存'
  COMMIT TRANSACTION
  END
  GO
  print '查看转账事务后的余额'
  SELECT * FROM bank?
  GO

 

转载于:https://my.oschina.net/u/3763295/blog/1603001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值