您好,登錄后才能下訂單哦!
事務是對數(shù)據庫操作的邏輯單位,在一個事務中可以包含一條或多條DML (數(shù)據操縱語言)、DDL (數(shù)據定義語言)和DCL (數(shù)據控制語言)語句,這些語句組成一個邏輯整體。
事務的執(zhí)行只有兩種結果:要么全部執(zhí)行,把數(shù)據庫帶入一個新的狀態(tài),要么全部不執(zhí)行,對數(shù)據庫不做任何修改。
對事務的操作有兩個:提交( COMMIT )和回滾( ROLLBACK )。
提交事務時,對數(shù)據庫所做的修改便永久寫入數(shù)據庫。
回滾事務時,對數(shù)據庫所做的修改全部撤銷,數(shù)據庫恢復到操作前的狀態(tài)。
事務可用于操作數(shù)據庫的任何場合,包括應用程序、存儲過程、觸發(fā)器等。
事務具有四個屬性,這四個屬性的英文單詞首字母合在一起就是ACID 。
這四個屬性是:
·原子性( Atomicity ):事務要么全部執(zhí)行,要么全部不執(zhí)行,不允許部分執(zhí)行。
·一致性( Consistency ):事務把數(shù)據庫從一個一致狀態(tài)帶入另一個一致狀態(tài)。
·獨立性( Isolation ):一個事務的執(zhí)行不受其他事務的影響。
·持續(xù)性( Durability ):一旦事務提交,就永久有效,不受關機等情況的影響。
一個事務中可以包含多條DML語句,或者包含一條DDL語句,或者包含一條DCL語句。
事務開始于第一條SQL語句,在下列之一情況下結束:
·遇到COMMIT或ROLLBACK 命令。
·遇到一條DDL或者DCL命令。
·系統(tǒng)發(fā)生錯誤、退出或者崩潰。
總之,事務是一系列可以把系統(tǒng)帶入一個新的狀態(tài)的操作,如果事務被提交,則數(shù)據庫進入一個新的狀態(tài),否則數(shù)據庫恢復到事務以前的狀態(tài)。
在數(shù)據庫中使用事務的好處是首先可以確保數(shù)據的一致性,其次在對數(shù)據做永久修改之前可以預覽以前的數(shù)據改變,還可以將邏輯上相關的操作進行分組。
控制事務的方式有兩種,一種是隱式控制,數(shù)據庫管理系統(tǒng)根據實際情況決定提交事務還是回滾事務;下載地址 springmvc整合mybatis框架源碼
另一種方式是顯式控制,在事務的最后放置一條COMMIT或ROLLBACK命令,將事務提交或回滾。
如果是隱式控制,那么事務在遇到一條DDL命令,如CREATE ,或者遇到一條DCL 命令,如GRANT ,或者從SQL *Plus正常退出,即使沒有發(fā)出COMMIT或ROLLBACK命令,這個事務將被自動提交。
如果從SQL*Plus非正常退出或發(fā)生系統(tǒng)崩潰,那么系統(tǒng)將自動回滾事務。
如果是顯式控制,那么在事務的最后就要通過COMMIT命令提交事務,或者通過一條ROLLBACK命令回滾事務。
如果事務被提交,那么對數(shù)據庫所作的修改將寫人數(shù)據庫。
如果回滾事務,一般情況下將回滾到事務的開始,即對數(shù)據庫不做任何修改。
在Oracle 中,允許部分回滾事務,即可以將事務有選擇地回滾到中間的某個點。
部分回滾是通過設置保存點( SAVEPOINT )來實現(xiàn)的。
事務中可以通過SAVEPOINT命令設置若干個保存點,這樣可以將事務有選擇地回滾到某一個保存點。
用戶訪問數(shù)據庫時,數(shù)據庫中的數(shù)據是放在緩沖區(qū)中的,當前用戶可以通過查詢操作,瀏覽對數(shù)據操作的結果。
如果沒有提交事務,其他用戶是看不到事務的修改結果的。
當一個用戶修改表中的數(shù)據時,將對被修改的數(shù)據加鎖,其他用戶無法在此期間對該行數(shù)據進行修改,直到這個用戶提交或回攘這個事務。
如果在事務的最后執(zhí)行了COMMIT命令,則對數(shù)據的修改將被寫入數(shù)據庫,以前的數(shù)據將永久丟失,無法恢復,其他用戶都可以瀏覽修改后的結果,在數(shù)據上加的鎖被釋放,其他用戶可以對數(shù)據執(zhí)行新的修改,在事務中設置的所有保存點將被刪除
如果在事務中設置了保存點,并且在事務的最后執(zhí)行ROLLBACK命令回滾到某個保存點,那么在此保存點之后的DML語句所做的修改將被丟棄,但是在此保存點之前的DML語句所做的修改仍然沒有寫入數(shù)據庫,還可以進行提交或回滾。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。