- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第19章 事务管理 事务是一系列命令的封装形式,也是数据库的基本对象。如果事务中的某一条命令执行不成功,则事务会进行取消或回滚操作,以保持数据的一致性。事务不是一个可视化对象,与视图不同,所以必须学会Transact-SQL语句后,再来学习事务管理。 19.1 事务的基本概念 在数据库操作过程中,如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据修改均被清除。 19.1.1 什么是事务 事务是数据库的某一工作单元执行的一系列操作。那什么样的语句才能算作一个工作单元呢?其必须包含4个属性:原子性、一致性、隔离性和持久性,英文简称为ACID属性。只有具备这些属性,一个工作单元才能称之为一个事务。 19.1.2 各种模式的事务之区别 SQL Server 2008为将事务分为:自动提交模式、显式事务、隐式事务等模式。本节简要说明每个模式的概念和区别。 1.自动提交模式 2.显式事务 3.隐性事务 19.2 管理事务 应用程序可以通过指定事务启动和结束的时间来管理事务。在SQL Server中,也可以使用SET语句或API函数来指定这些时间。本节就通过几个简单的操作来学习事务的一些控制,如启动事务、结束事务等。 19.2.1 启动事务 在SQL Server中,使用API函数和Transact-SQL语句,可以将事务作为显式、自动提交或隐式事务来启动。下面介绍几种模式的主要启动方法。 (1)显式事务:通过API函数或BEGIN TRANSACTION语句来显式启动事务。 (2)自动提交事务:默认模式。每个Transact-SQL语句都在其完成后提交。不需要指定任何语句来控制事务,也不需要使用任何API函数或方法来自动提交事务。 (3)隐式事务:通过API函数或SET IMPLICIT_TRANSACTIONS ON语句,将隐性事务模式设置为打开。下个语句会自动启动一个新事务。该事务完成后,下一个语句又将自动启动一个新事务。 19.2.2 结束事务 在SQL Server中,可以使用COMMIT或ROLLBACK语句来结束事务,还通过API函数来结束事务。 COMMIT:如果事务各语句运行成功,则提交。COMMIT语句保证事务的所有修改,在数据库中都保持永久性。 ROLLBACK:如果事务在执行过程中出现错误,则取消或回滚事务。ROLLBACK语句会将数据返回到其在事务开始时所处的状态。 19.2.3 事务的错误处理 前面多次提到过ROLLBACK语句,其主要是负责回滚操作。在事务执行过程中,可能因为某个错误导致事务执行不成功,则SQL Server会自动回滚该事务,以保持数据的完整性和一致性。这种情况虽然比较少,但很关键,如网络突然中断、数据库突然发生变化或者数据冲突等。 如果执行了SET XACT_ABORT ON语句,则任何运行时语句错误,都会导致自动回滚当前事务。一种处理或捕获错误的有效工具是TRY…CATCH构造。 19.2.4 事务中的SQL语句 并不是所有的SQL语句都能在事务中使用。 19.3 事务应用案例 SQL Server中的事务并没有可视化的工具来操作,不管是开始事务、提交事务还是回滚事务,都是通过执行Transact-SQL语句来完成的。 19.3.1 开始事务-BEGIN TRANSACTION 开始事务是每个事务的起始点。BEGIN TRANSACTION使@@TRANCOUNT全局变量按1递增,其语法如下: 1 BEGIN { TRAN | TRANSACTION } 2 [ { transaction_name | @tran_name_variable } 3 [ WITH MARK [ description ] ] 4 ] 5 [ ; ] 19.3.2 标记事务 在BEGIN TRANSACTION语句中, WITH MARK用来标记事务。标记事务使事务名被置于事务日志中。只有当数据库由标记事务更新时,才在事务日志中放置标记。不修改数据的事务是不会被标记的。 19.3.3 提交事务-COMMIT TRANSACTION COMMIT用来提交事务,其位于事务的结束位置,其语法如下: 1 COMMIT { TRAN | TRANSACTION } 2 [ transaction_name | @tran_name_variable ] ] 3 [ ; ] 19.3.4 回滚事务-ROLLBACK TRANSACTION 回滚事务指将显式事务或隐性事务,回滚到事务的起点或某个保存点,其语法为: 1 ROLLBACK { TRAN | TRANSACTION } 2 [ tran
您可能关注的文档
最近下载
- 市政基础设施工程施工现场质量管理标准化.doc
- 手机照片视频误删后的恢复方法.doc VIP
- 一例无法控制大脑的心理咨询案例——以人为中心疗法取向.pdf VIP
- [教你如何制作KTV歌曲VOD歌曲KTV歌曲库.doc VIP
- 照明设计软件:AGI 32二次开发_AGI32数据管理与优化.docx VIP
- 第五届潍坊市职业技能大赛城市管理网格员题库及答案(760题).docx VIP
- 鼻肠管滑脱的应急预案.pptx VIP
- DGT 801系列数字式发电机变压器组保护装置技术说明书.pdf
- 广东省肇庆市怀集县事业单位考试真题每日一练带答案解析(2021年03月02日).docx VIP
- 农村教师公开选调进城考试模拟试题1(初中地理·附参考答案).docx
文档评论(0)