- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
大型数据库第8章
第8章 oracle的事务 事务的基本概念 事务是数据库区别于文件系统的重要特性。如果要让两个文件同步,但更新一个文件,然后更新另外一个文件之前,系统崩溃,则文件系统难以保证这两个文件同步。 事务的4个特征: (1)原子性(atomicity) (2)一致性(consistency) (3)隔离性(isolation) (4)持久性(durability) 8.1 事务控制语句 Commit Rollback Savepoint Rollback to savepoint Set transaction 8.2.1 语句级原子性 原子性语句的形式如下: Savepoint statement1 Insert into value(…) If error then rollback to statement 这里可以是update,delete ,merge等语句。 8.2.2过程性原子性 Oracle将匿名的PL/SQL块也当成语句。 什么是匿名的PL/SQL块? 例如:declare begin ….. end; create or replace procedure p as begin insert into t values(1); insert into t values(-1); end; / 下面就是一个匿名的pl/sql块 begin p; end; 8.2.2过程性原子性 若在表t上加一个约束。 create table t (x int check(x0)) 然后: begin p; end; 由于p中的两句insert中,有一句会违背约束条件,所以整个pl/sql语句会回滚。 若对pl/sql进行异常处理,则不会回滚。 begin p; exception when others then null; end; 8.2.2过程性原子性 异常处理之后仍能回滚。 begin savepoint p p; exception when others then rollback to sp; end; 8.4 不好的事务习惯 许多人对事务方面都有不好的习惯,很多人只知道数据库只有事务,但是并没有将事务的作用发挥出来,从而造成了很多不好的习惯,最主要的习惯有下面两个: (1) 在循环中提交 (2) 自动提交 8.4.1 在循环中提交 循环提交的不好习惯会造成如下的影响: (1) 影响性能 (2) snapshot too old错误:由于oracle在读数据时采取一致读,所以频繁提交会出现很多版本,从而导致查询效率降低。 8.4.2 使用自动提交 ODBC和JDBC有API在默认情况下都是“自动提交”,这种方式有很多的问题,例如:将$1000从一个帐户转到另一个帐户: Update accounts set balance=balance -1000 where account_id=123 Update accounts set balance=balance +1000 where account_id=456 在程序中通过JDBC提交这两条语句,JDBC会在每个update之后加一个commit,但是假如在第一个update完成之后,第一个update执行前,系统崩溃,则会出现大问题。 编程人员要根据实际情况来考虑事务是解决这类问题的根本方法。 8.5 自治事务 自治事务(autonomous transaction):事务中的事务,它独立于父事务的事务。它可用于: (1)顶层匿名块 (2)本地(过程中的过程)、独立或打包的函数和过程 (3)对象类型的方法 (4)数据库触发器 8.5.1 自治事务工作原理 先建一个表:create table t (msg varchar2(25)) 创建一个存储过程,Automomous_insert,通过指令pragma autonomous_transation告诉oracle,在执行这个存储过程时要作为一个新的自治事务来执行,其独立于父事务。 在创建一个一般的存储过程,名叫NonAutomomous_insert 。 分两种情况执行: (1) begin insert into t values(‘Anonymous Block’); NonAutomomous_insert; end; (2) begin insert into t values(‘Anonymous Block’); NonAutomomous_i
您可能关注的文档
最近下载
- 羊水栓塞护理措施.pptx VIP
- 星球版八年级上册地理第四章《第一节 因地制宜发展农业》教案.docx VIP
- 2025年粤东西北教师全员轮训心得体会2篇.doc VIP
- TCRHA-成人床旁心电监测护理规程.pdf VIP
- 中联W6015-8A塔吊说明书操作手册.pdf VIP
- 过滤材料和部件市场前景预测与技术创新策略研究报告.pdf
- 新生儿甲状腺功能降低.pptx
- 8.27-安徽A10联盟2025届高三8月底开学摸底考试题及答案1号卷·A10联盟2025届高三上学期8月底开学摸底考物理答案.pdf VIP
- 华为HCIE-CloudServiceSolutionsArchitect云服务练习试题.doc
- 8.27-安徽A10联盟2025届高三8月底开学摸底考试题及答案A10联盟2025届高三上学期8月底开学摸底考英语答案 1.docx VIP
文档评论(0)