数据库课件CH10事务管理与恢复.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
问题背景 现实应用中,数据库的操作与操作之间往往具有一定的语义和关联性。数据库应用希望将这些有关联的操作当作一个逻辑工作单元看待,要么都执行,要么都不执行。 [例10.1] 飞机订票系统有两个表Sale和Flight,分别记录各售票点的售票数及全部航班的剩余票数: Sale(agentNo, flightNo, date, saledNumber) Flight(flightNo, date, remainNumber) 现有A0010售票点欲出售F005航班2008年8月8日机票2张。 问题背景 可编制如下程序: 查询F005航班2008年8月8日剩余票数A; (1) if (A2) 拒绝操作,并通知票源不足; else 更新A0010售票点的售票数; 更新F005航班的剩余票数; 问题背景 语句(2)是在当F005航班2008年8月8日的剩余票数大于请求票数时更新Sale和Flight表。该更新包括两个update操作: UPDATE Sale SET saledNumber=saledNumber+2 WHERE agentNo=‘A0010’ AND flightNo=‘F005’ AND date=‘2008-08-08’ UPDATE Flight SET remainNumber=remainNumber–2 WHERE flightNo=‘F005’ AND date=‘2008-08-08’ 问题背景 假设F005航班共有200个座位,2008年8月8日机票已售198张(其中被A0010售出20张),余票2张。 当第1个UPDATE语句执行成功时,即A0010已售票数更新为22。当系统发生故障重新提供服务时,如果又有售票点请求出售F005航班2008年8月8日机票2张,由于F005的剩余票数未更新(仍为2),因此满足其要求又出售了2张。 结果多卖了2张票! 问题背景 为解决上述问题,数据库管理系统引入了事务概念,它将这些有内在联系的操作当作一个逻辑单元看待,并采取相应策略保证一个逻辑单元内的全部操作要么都执行成功,要么都不执行。 对数据库用户而言,只需将具有完整逻辑意义的一组操作正确地定义在一个事务之内即可。 事务概念 对于用户而言,事务是具有完整逻辑意义的数据库操作序列的集合。 对于数据库管理系统而言,事务则是一个读写操作序列。这些操作是一个不可分割的逻辑工作单元,要么都做,要么都不做。 事务是数据库管理系统中竞争资源、并发控制和恢复的基本单元。 它是由数据库操作语言(如SQL)或高级编程语言(如Java、C、C++)提供的事务开始语句、事务结束语句以及由它们包含的全部数据库操作语句组成。 事务结束语句 事务结束的两种类型: 事务提交(commit):将成功完成事务的执行结果(即更新)永久化,并释放事务占有的全部资源。 事务回滚(rollback):中止当前事务、撤销其对数据库所做的更新,并释放事务占有的全部资源。 SQL Server事务模式 SQL Server数据库提供了三种类型的事务模式: 显式事务是指用户使用Transact-SQL事务语句所定义的事务,其事务语句包括: 事务开始:BEGIN TRANSACTION 事务提交:COMMIT TRANSACTION,COMMIT WORK 事务回滚:ROLLBACK TRANSACTION,ROLLBACK WORK 隐式事务是指事务提交或回滚后,系统自动开始新的事务。该类事务不需要采用BEGIN TRANSACTION语句标识事务的开始。 自动定义事务:当一个语句成功执行后,它被自动提交,而当执行过程中出错时,则被自动回滚。 SQL Server事务定义举例 [例10.2] 利用SQL Server提供的显式事务模式定义例10.1中的数据库更新事务。 BEGIN TRANSACTION UPDATE Sale SET saledNumber=saledNumber+2 WHERE agentNo=‘A0010’ AND flightNo=‘F005’ AND date=‘2008-08-08’ UPDATE Flight

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档