第8章数据操作与事务控制..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文档。上传文档
查看更多
* 如果某条语句在执行过程发生错误,事务的一部分将通过隐含回滚的方式被撤销。如果某个事务中的单条DML语句在执行过程中发生错误,那么这条语句所产生的影响将通过语句级回滚的方式被消除,但是在这个事务中其它的数据变化不会被撤销,它们仍然可以通过明确的方式被用户提交或回滚。 在使用DDL语句的前后,Oracle会自动地发出隐含的COMMIT。因此,即使您的DDL语句没有成功地执行,您也不能再回滚到先前的状态,因为服务器已经发出了提交命令。 通过执行COMMIT或 ROLLBACK语句明确地终止事务。 * 显式事务处理语句 可以使用 COMMIT、SAVEPOINT、 ROLLBACK语句控制事物逻辑 。 COMMIT:结束目前的事务,将数据更新至数据库。 ROLLBACK:结束目前的事务,忽略所有数据更改动作。 SAVEPOINT:设定事务断点,可以将事务退回至此断点。 * 提交变化 事务中的数据变化都是暂时的直到事物提交 执行COMMIT或ROLLBACK前的数据状态 数据变化上的操作首先影响的是数据库的缓冲区,因此变化前的状态是可以恢复的。 当前用户可以通过查询的方式来验证数据变化操作后的结果。 其他用户不能查看当前用户产生的数据变化操作后的结果。Oracle服务器建立数据读取上的一致性,保证每一个用户所看到的数据状态和最后一次提交后的状态一致。 对于Oracle服务器,在提交之前数据变化可能已经写入了数据库文件,但是这仍然是暂时的。如果多个用户同时操作同一个表,那么他们看到的仅仅是自己的操作所产生的变化。其他用户看到的数据是最后一次提交后的状态也就是数据变化前的状态。默认的情况下,Oracle服务器具有记录级的锁定功能,不过锁定方式是可以修改的。 * * 可以在当前事务中使用SAVEPOINT语句创建一个标记状态,因此整个事务便可以分成多个小节。可以使用ROLLBACK TO SAVEPOINT 语句撤销某些悬而未决的操作将数据库恢复到某个标记状态。如果您使用第一次标记状态所用的名字来创建第二个标记状态,那么头一个标记状态将被删除,只保存当前的数据状态。 * 可以在当前事务中使用SAVEPOINT语句创建一个标记状态,因此整个事务便可以分成多个小节。可以使用ROLLBACK TO SAVEPOINT 语句撤销某些悬而未决的操作将数据库恢复到某个标记状态。如果您使用第一次标记状态所用的名字来创建第二个标记状态,那么头一个标记状态将被删除,只保存当前的数据状态。 * 可以在当前事务中使用SAVEPOINT语句创建一个标记状态,因此整个事务便可以分成多个小节。可以使用ROLLBACK TO SAVEPOINT 语句撤销某些悬而未决的操作将数据库恢复到某个标记状态。如果您使用第一次标记状态所用的名字来创建第二个标记状态,那么头一个标记状态将被删除,只保存当前的数据状态。 * 可以在当前事务中使用SAVEPOINT语句创建一个标记状态,因此整个事务便可以分成多个小节。可以使用ROLLBACK TO SAVEPOINT 语句撤销某些悬而未决的操作将数据库恢复到某个标记状态。如果您使用第一次标记状态所用的名字来创建第二个标记状态,那么头一个标记状态将被删除,只保存当前的数据状态。 * 数据库用户的两种数据访问方式: 读操作 (SELECT语句) 写操作 (INSERT, UPDATE, DELETE 语句) 读取的一致性体现在以下方面: 数据库的读取者和写入者都可以确保一致性的数据视图 读取者不会查询正处于变化过程中的数据 写入者被确保以相同的方式处理数据库的变化. 一个用户所产生的数据变化不会和另一个用户所产生的数据变化相冲突 读取一致性的目的是为了确保每一个用户看到的数据都是最后一次提交后及新的DML操作开始前的数据状态。 读取的一致性是自动实现的。在回滚段中保留了数据库的部分拷贝,当对数据发出插入、更新、删除操作时,Oracle服务器提取出变化之前的数据拷贝并写入回滚段中。 除了发出操作的用户,其它所有用户看到的数据库是和变化开始前的状态相同,他们查看的是回滚段数据快照。 变化提交前,只有发出此变化操作的用户可以看到改变后的数据,其他用户只能看到回滚段中的数据快照。这样就保证了数据库的读取者读取到当前未经历变化的一致数据。 当一条DML语句提交后,数据库的变化对每一个执行SELECT语句的用户来说都是可见的。那些回滚段中保存着的老数据所占的空间被释放。 如果该事务被回滚,也就是变化被撤销 保存在回滚块中的原来的数据被回写入表中 所有用户看到的数据是事务开始之前的状态 当您提交事务,Oracle服务器释放回滚信息但不是立即破坏它。那些信息仍然保留在回滚块中。 * 读取一致性的实现 读取的一致性是自动实现

文档评论(0)

peain + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档