成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 吉林OA系統(tǒng) > 長(zhǎng)春OA系統(tǒng) > 長(zhǎng)春OA行業(yè)資訊
數(shù)據(jù)庫(kù)中的事務(wù)處理概念及其應(yīng)用
申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114
文章來(lái)源:泛普軟件一 什么是事務(wù)
事務(wù)是由相關(guān)操作構(gòu)成的一個(gè)完整的操作單元。兩次連續(xù)成功的COMMIT或ROLLBACK之間的操作,稱(chēng)為一個(gè)事務(wù)。在一個(gè)事務(wù)內(nèi),數(shù)據(jù)的修改一起提交或撤銷(xiāo),如果發(fā)生故障或系統(tǒng)錯(cuò)誤,整個(gè)事務(wù)也會(huì)自動(dòng)撤銷(xiāo)。
比如,我們?nèi)ャy行轉(zhuǎn)賬,操作可以分為下面兩個(gè)環(huán)節(jié):
(1) 從第一個(gè)賬戶劃出款項(xiàng)。

(2) 將款項(xiàng)存入第二個(gè)賬戶。
在這個(gè)過(guò)程中,兩個(gè)環(huán)節(jié)是關(guān)聯(lián)的。第一個(gè)賬戶劃出款項(xiàng)必須保證正確的存入第二個(gè)賬戶,如果第二個(gè)環(huán)節(jié)沒(méi)有完成,整個(gè)的過(guò)程都應(yīng)該取消,否則就會(huì)發(fā)生丟失款項(xiàng)的問(wèn)題。整個(gè)交易過(guò)程,可以看作是一個(gè)事物,成功則全部成功,失敗則需要全部撤消,這樣可以避免當(dāng)操作的中間環(huán)節(jié)出現(xiàn)問(wèn)題時(shí),產(chǎn)生數(shù)據(jù)不一致的問(wèn)題。
一個(gè)事務(wù)是由一個(gè)可執(zhí)行的SQL語(yǔ)句開(kāi)始,一個(gè)可執(zhí)行SQL語(yǔ)句產(chǎn)生對(duì)實(shí)例的調(diào)用。在事務(wù)開(kāi)始時(shí),被賦給一個(gè)可用回滾段,記錄該事務(wù)的回滾項(xiàng)。一個(gè)事務(wù)以下列任何一個(gè)出現(xiàn)而結(jié)束。數(shù)據(jù)庫(kù)事務(wù)是一個(gè)邏輯上的劃分,有的時(shí)候并不是很明顯,它可以是一個(gè)操作步驟,也可以是多個(gè)操作步驟。
我們可以這樣理解數(shù)據(jù)庫(kù)事物:對(duì)數(shù)據(jù)庫(kù)所做的一系列修改,在修改過(guò)程中,暫時(shí)不寫(xiě)入數(shù)據(jù)庫(kù),而是緩存起來(lái),用戶在自己的終端可以預(yù)覽變化,直到全部修改完成,并經(jīng)過(guò)檢查確認(rèn)無(wú)誤后,一次性提交并寫(xiě)入數(shù)據(jù)庫(kù),在提交之前,必要的話所做的修改都可以取消。提交之后,就不能撤銷(xiāo),提交成功后其他用戶才可以通過(guò)查詢?yōu)g覽數(shù)據(jù)的變化。
以事務(wù)的方式對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),有如下的優(yōu)點(diǎn):
* 把邏輯相關(guān)的操作分成了一個(gè)組。
* 在數(shù)據(jù)永久改變前,可以預(yù)覽數(shù)據(jù)變化。
* 能夠保證數(shù)據(jù)的讀一致性。
二 數(shù)據(jù)庫(kù)事務(wù)的應(yīng)用
數(shù)據(jù)庫(kù)事務(wù)處理可分為隱式和顯式兩種。顯式事務(wù)操作通過(guò)命令實(shí)現(xiàn),隱式事務(wù)由系統(tǒng)自動(dòng)完成提交或撤銷(xiāo)(回退)工作,無(wú)需用戶的干預(yù)。
隱式提交的情況包括:當(dāng)用戶正常退出SQL*Plus或執(zhí)行CREATE、DROP、GRANT、REVOKE等命令時(shí)會(huì)發(fā)生事務(wù)的自動(dòng)提交。
還有一種情況,如果把系統(tǒng)的環(huán)境變量AUTOCOMMIT設(shè)置為ON(默認(rèn)狀態(tài)為OFF),則每當(dāng)執(zhí)行一條INSERT、DELETE或UPDATE命令對(duì)數(shù)據(jù)進(jìn)行修改后,就會(huì)馬上自動(dòng)提交。設(shè)置命令格式如下:
SET AUTOCOMMIT ON/OFF
隱式回退的情況包括:當(dāng)異常結(jié)束SQL*Plus或系統(tǒng)故障發(fā)生時(shí),會(huì)發(fā)生事務(wù)的自動(dòng)回退。
顯式事務(wù)處理的數(shù)據(jù)庫(kù)事務(wù)操作語(yǔ)句有3條,分別是COMMIT,ROLLBACK,SAVEPOINT語(yǔ)句。
COMMIT是數(shù)據(jù)庫(kù)事物提交,將變化寫(xiě)入數(shù)據(jù)庫(kù)。此操作把多個(gè)步驟對(duì)數(shù)據(jù)庫(kù)的修改,一次性地永久寫(xiě)入數(shù)據(jù)庫(kù),代表數(shù)據(jù)庫(kù)事務(wù)的成功執(zhí)行。ROLLBACK是數(shù)據(jù)庫(kù)事務(wù)回退,撤銷(xiāo)對(duì)數(shù)據(jù)庫(kù)的修改。操作在發(fā)生問(wèn)題時(shí),把對(duì)數(shù)據(jù)庫(kù)已經(jīng)作出的修改撤消,回退到修改前的狀態(tài)。在操作過(guò)程中,一旦發(fā)生問(wèn)題,如果還沒(méi)有提交操作,則隨時(shí)可以使用ROLLBACK來(lái)撤消前面的操作。SAVEPOINT則用于在事務(wù)中間建立一些保存點(diǎn),ROLLBACK可以使操作回退到這些點(diǎn)撤上邊,而不必撤銷(xiāo)全部的操作。一旦COMMIT完成,就不能用ROLLBACK來(lái)取消已經(jīng)提交的操作。一旦ROLLBACK完成,被撤消的操作要重做,必須重新執(zhí)行相關(guān)操作語(yǔ)句。
如何開(kāi)始一個(gè)新的事務(wù)呢?一般情況下,開(kāi)始一個(gè)會(huì)話(即連接數(shù)據(jù)庫(kù)),執(zhí)行第一條SQL語(yǔ)句將開(kāi)始一個(gè)新的事務(wù),或執(zhí)行COMMIT提交或ROLLBACK撤銷(xiāo)事務(wù),也標(biāo)志新的事務(wù)的開(kāi)始。另外,執(zhí)行DDL(如CREATE)或DCL命令也將自動(dòng)提交前一個(gè)事務(wù)而開(kāi)始一個(gè)新的事務(wù)。
數(shù)據(jù)在修改的時(shí)候會(huì)對(duì)記錄進(jìn)行鎖定,其他會(huì)話不能對(duì)鎖定的記錄進(jìn)行修改或加鎖,只有當(dāng)前會(huì)話提交或撤銷(xiāo)后,記錄的鎖定才會(huì)釋放。
例如修改雇員SCOTT的工資,工資在原有基礎(chǔ)上增加1000:
UPDATE emp SET sal=sal+1000 WHERE empno=7788;
執(zhí)行結(jié)果:
已更新 1 行。
顯示修改后SCOTT的工資:
SELECT ename,sal FROM emp WHERE empno=7788;

執(zhí)行結(jié)果:
ENAME SAL
SCOTT 4000
經(jīng)查看修改結(jié)果正確,提交所做的修改:
COMMIT;
執(zhí)行結(jié)果:
提交完成。
在執(zhí)行COMMIT后,工資的修改被永久寫(xiě)入數(shù)據(jù)庫(kù)。本訓(xùn)練的第1步,先使用COMMIT命令提交原來(lái)的操作,同時(shí)標(biāo)志一個(gè)新的事務(wù)的開(kāi)始。注意:在事務(wù)執(zhí)行過(guò)程中,隨時(shí)可以預(yù)覽數(shù)據(jù)的變化。對(duì)于比較大的事務(wù),可以使用SAVEPOINT命令在事務(wù)中間劃分一些斷點(diǎn),用來(lái)作為回退點(diǎn)。(IT專(zhuān)家網(wǎng))
本文內(nèi)容來(lái)自自互聯(lián)網(wǎng)公開(kāi)信息或用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人,版權(quán)歸原作者所有。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。若發(fā)現(xiàn)侵權(quán)或違規(guī)內(nèi)容請(qǐng)聯(lián)系電話4008352114或郵箱442699841@qq.com,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
本站推薦
- 1庫(kù)存管理系統(tǒng)數(shù)據(jù)庫(kù)分析之?dāng)?shù)據(jù)洞察與業(yè)務(wù)決策關(guān)鍵要點(diǎn)
- 2庫(kù)存管理系統(tǒng)數(shù)據(jù)庫(kù)下載_含多行業(yè)模板及使用教程
- 3數(shù)據(jù)庫(kù)采購(gòu)管理系統(tǒng)論文之系統(tǒng)優(yōu)勢(shì)與應(yīng)用案例深度剖析
- 4數(shù)據(jù)庫(kù)超市采購(gòu)管理系統(tǒng)助力高效采購(gòu)降本增效
- 5c#數(shù)據(jù)庫(kù)倉(cāng)儲(chǔ)管理系統(tǒng)助力高效庫(kù)存管控與數(shù)據(jù)精準(zhǔn)處理
- 6access數(shù)據(jù)庫(kù)倉(cāng)庫(kù)管理系統(tǒng)助力高效庫(kù)存管控與精準(zhǔn)出入庫(kù)管理
- 7平臺(tái)管理工程師DBA指南:數(shù)據(jù)庫(kù)優(yōu)化技巧、性能監(jiān)測(cè)最佳實(shí)踐!
- 8請(qǐng)你提供具體的關(guān)于物流管理系統(tǒng)概念數(shù)據(jù)庫(kù)的標(biāo)題,以便我進(jìn)行改寫(xiě)。
- 9揭秘:哪家開(kāi)源數(shù)據(jù)庫(kù)項(xiàng)目管理系統(tǒng)最實(shí)惠?省成本的最佳選擇!

