新聞中心
Oracle數(shù)據(jù)庫操作中,我們會遇到處理DDL語句和DML語句的情況,如果遇到了Oracle DDL語句和DML語句需要在一個事務中一塊處理的情況,該方法要么成功,要么失敗。對于這個問題,SQL Server等數(shù)據(jù)庫是可以解決的,因為其能對DDL語句做回滾,而Oracle在執(zhí)行DDL語句時會先執(zhí)行commit,所以就不能對DDL語句回滾了。

成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、肅州網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5網(wǎng)站設計、商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為肅州等各大城市提供網(wǎng)站開發(fā)制作服務。
事務相關(guān)概念:
1、首先,說說數(shù)據(jù)庫對事務的相關(guān)定義:
在數(shù)據(jù)庫中事務是工作的邏輯單元 , 一個事務是由一個或多個完成一組的相關(guān)行為的 SQL 語句組成 , 通過事務機制確保這一組 SQL 語句所作的操作要么完全成功執(zhí)行 , 完成整個工作單元操作 , 要么一點也不執(zhí)行。 事務具有ACID特性(即:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation,又稱獨立性)、持久性(Durability)),ACID的概念在ISO/IEC 10026-1:1992文件的第四段內(nèi)有所說明(我找了半天也沒下載到這個標準,誰有的送我一份啊,呵呵)。
2、假設Oracle版本為10g,10g對應的jdbc版本為3??匆幌翵DBC3有關(guān)事務概念:
JDBC3提到了事務和分布式事務。對于大家經(jīng)常說的嵌套事務,沒有提及。數(shù)據(jù)庫本質(zhì)上從來沒有過嵌套事務的概念,只是應用程序為了不同的目的將對事務的操作過程嵌套起來,即使是Oracle的自治事務也可劃為應用程序(存儲過程或是觸發(fā)器什么的), 從應用角度講,嵌套事務處理就是應用程序如何將應用層面的嵌套轉(zhuǎn)變?yōu)閿?shù)據(jù)庫層面的單事務操作, 這方面Java領(lǐng)域的EJB,Spring提供了解決方案,另外提一下JTA,它提供了事務的suspend,resume功能,實質(zhì)上其實數(shù)據(jù)庫事務那里有什么掛起什么的概念,其僅僅是換了一個數(shù)據(jù)庫連接,這樣新的數(shù)據(jù)庫事務開始了,老的數(shù)據(jù)庫事務便不再操作,直接其被resume。)。
解決方法:
要想解決一個問題,找到問題的關(guān)鍵所在,就等于成功了一半。如上所述,該問題的關(guān)鍵所在又是什么呢?
Oracle在執(zhí)行DDL語句時會先執(zhí)行commit,所以就不能對DDL語句進行回滾。jdbc事務也不提供相關(guān)方法來進行回滾(spring、ejb或許可以,但沒測試過,不好說)。
既然應用的一些框架不能提供該功能,就只能自己想辦法解決了,怎么解決?反向操作!或許感覺有些麻煩,但不這么做又如何呢,在操作SQL語句成功后,后邊跟著反向操作的定義(內(nèi)部類派上用場了),在一個大的事務中,如果出現(xiàn)異常,在異常的地方把反向操作執(zhí)行一把即可。再進一步,如果讓所有的DDL語句能和DML語句用不同的數(shù)據(jù)庫連接,那么DML語句就不用反向操作了,節(jié)省了很多工作量,DML語句用事務的回滾多好?。‘斎贿@樣做的前提是,在DDL執(zhí)行時,不能和DML操作的資源引起沖突,即鎖的問題。
關(guān)于Oracle數(shù)據(jù)庫對DDL語句和DML語句的事務管理的知識就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】
- Oracle數(shù)據(jù)庫如何創(chuàng)建DATABASE LINK?
- Oracle 10g 數(shù)據(jù)庫閃回的配置與使用詳解
- SQL Server數(shù)據(jù)庫日志已滿的解決方法總結(jié)篇
- SQL Server分頁存儲過程的五種方法及性能比較
- 操作系統(tǒng)不支持SQL Server服務器組件的解決方案
網(wǎng)站欄目:Oracle數(shù)據(jù)庫對DDL語句和DML語句的事務管理
分享網(wǎng)址:http://www.dlmjj.cn/article/codhijs.html


咨詢
建站咨詢
