数据库事务处理的分析与探讨

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:bbyyqq555
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:该文介绍了SQL Server数据库中事务的概念及分类,以及事务处理的必要性。并举例探讨了在SQL Server数据库中如何使用事务,介绍了在Java中利用JDBC进行事务处理的方法。
  关键词:数据库;事务处理;数据一致性
  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)18-0023-02
  随着计算机技术的飞速发展,数据库技术在实际生活中得到了广泛的应用,在使用过程中也从单个用户向网络用户发展,这也使得数据库在安全性管理上显得更为迫切。在数据库操作过程中,有时要执行的一个SQL语句块中,可能为会出现一条或几条语句因意外故障而被中断执行,这样就有要能产生数据库中的数据不一致,解决这个问题的方法就是数据库的事务。
  1事务概述
  数据库中的事务是一组T-SQL语句组成的集合,这组语句必须作为一个整体来执行,要么成功执行每一条语句,要么一条语句发生意外未被执行,则所有操作复原,数据库恢复到语句执行之前的状态。例如,银行的转账业务,将A账户向B账户转入1000元钱,要完成转账业务,首先将A账户中的余额减少1000元,再将B账户余额增加1000元,这两个操作均成功后才能完成转账业务,否则,数据恢复,取消转账,这就是一个事务。
  1.1事务特性
  事务作为单个逻辑工作单元,它具有4个特性:
  原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行;
  一致性(Consistency):当事务完成或失败时,数据必须处于一致状态;
  隔离性(Isolation):对数据进行的事务操作是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务;
  永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性。
  1.2事务类型
  sql server数据库中的事务分为三类:显式事务、隐式事务和自动提交事务。
  显示事務:用begin tran指定事务的开始,以committran或rollback tran语句结束。这是最常用的事务类型。
  隐性事务:通过设置set implicit transactions on语句,将隐性事务模式设置为打开,下一个语句自动启动一个新事务。当该事务完成时,再下一个T-SQL语句又将启动一个新事务。
  自动提交事务:这是SQL Server的默认模式,它将每条单独的T-SQL语句视为一个事务,如果成功执行,则自动提交,如果错误,则自动回滚。
  2 sql server中的事务处理
  sql server中的事务以BEGIN TRANSACTION指定事务的开始,以commit tran或rollback tran语句结束。假如,A账户中有100元,B账户中有100元,现在将A账户的1000元转入B账户,代码如下:
  begin tran
  update account set rmb=rmb-1000 where username=′A′
  update account set rmb=rmb 1000 where username=′B′
  commit tran
  因为A账户的余额不足,执行时会出现一个违反check约束的错误信息,但随后又提示“1行受影响”。我们执行select*from account后发现A账户中的余额不足,所以第一行update语句没有执行,但B账户中却增加了1000元钱。这是什么原因呢?原来SQL Server在发生runtime错误时,默认会rollback引起错误的语句,而继续执行后续语句。这显示是不合理的,我们应避免这种情况发生。
  2.1利用set xactabort on
  在事务处理的最前面加上set xact_abort on语句,当xact_abort选项为on时,SQL Server在遇到错误时会终止执行并rollback整个事务。代码如下:
  set xact_abort on
  begin tran
  update account set rmb=rmb-1000 where username=′A′
  update account set rmb=rmb 1000 where username=′B′
  commit tran
  此时,会发现当A中余额不足时,转账失败,B账户中的余额也没有增加。
  2.2判断每条SQL语句
  在每个单独的DML语句执行后,立即判断执行状态,并做相应处理。利用@@ERROR的值进行判断SQL语句是否成功执行,若@@ERROR的值大于0,SQL语句失败,则回滚事务并恢复数据库。代码如下:
  begin tran
  update account set rmb=rmb-1000 where username=′A′
  if@@error>0
  rollback tran
  update account set rmb=rmb 1000 where username=′B′
  if@@error>0
  rollback tran
  commit tran
  2.3利用try…catch异常处理机制
  在SQL Server中,可利用try…catch异常处理机制来处理事务,代码如下:
其他文献
在目前的网络教学系统中,存在着无法与移动设备友好兼容的问题,该篇论文针对此问题,对公众平台与微信网上教学系统服务应用的可行性进行深入分析与研究。有效应用JavaWeb软件
在多金属硫化物矿区,通过地表岩屑地球化学测量和大功率激电中梯测量发现物化探异常,结合地质情况,对物化探异常进行综合研究分析,利用钻探工程对异常进行验证,为一条快速、
<正>~~
期刊
以碘量法测定粗铜中的铜(YS/T 521.1-2009)质量分数为例,对测量结果进行不确定度评定。测量结果的不确定度的主要来源包括:称样质量、标准溶液的配制、标准滴定液的标定及样品测
洁白的雪花纷纷扬扬,北风吹着口哨,有点张狂,小桥上谁在走来走去,徐徐飘动的红围巾格外鲜亮。啊,是你吗,是你吗?留守的姑娘,雪花演播的情景让我热泪盈眶,回家吧,回家吧,你轻轻呼唤,幸福的
根据《音乐课程标准》的要求,进行,音乐课程改革需要适当引入乡土音乐,这有助于提升本民族的文化认同感。高校作为音乐人才培养的重要殿堂,在其特色音乐教学中,引入乡土歌曲等音乐
运用变压器的经济运行理论,分析探讨了企业变配电变压器经济运行的问题。
分析了影响厚板坯连铸机结晶器寿命的主要影响因素,并采取了有效的解决措施,使结晶器使用寿命得到了有效的提高。
摘要:该文介绍了信息系统被攻击的常见手段,并提出了防范措施,促使工作人员提高防范意识。  关键词:互联网;信息系统;攻击;防范  中图分类号:TP393  文献标识码:A  文章编号:1009-3044(2017)10-0038-02  1.引言  随着互联网的兴起和发展,互联网已经渗透每个人的生活的方方面面,利用互联网信息系统提高企业单位的工作效率和管理水平开始变得普遍。越来越多的小型企业单位架