資料庫學習 16 事物控制語言

2021-09-29 06:20:59 字數 1339 閱讀 7518

由乙個或一組sql語句組成乙個執行單元,這個執行單元要麼全部執行,要麼全部不執行,它們之間是相互依賴的。整個單元作為乙個不可分割的一部分,如果單元中某一條sql語句一旦執行失敗或者產生錯誤,整個單元將會回滾,所有受影響的資料將會返回到事物開始以前的狀態。

隱式事務:事務沒有明顯的開啟和結束的標記

比如insert、update、delete語句

顯式事務:事務具有明顯的開啟和結束的標記

前提:必須先設定自動提交功能為禁用

禁用方式:set autocommit=0,只在當前的事物下有效。

步驟1:開啟事務

set autocommit=0;

步驟2:編寫事務中的sql語句

步驟3:結束事務

方式一:commit; #提交事務,提交過不能再改變

方式二:rollback; #回滾事務,即返回

#開啟事務

set autocommit=0;

start transaction;

#編寫一組事務的語句

update account set balance = 1000 where username='張無忌';

update account set balance = 1000 where username='趙敏';

#結束事務

commit;

對於同時執行的多個事務, 當這些事務訪問資料庫中相同的資料時, 如果沒有採取必要的隔離機制, 就會導致各種併發問題:

資料庫事務的隔離性: 資料庫系統必須具有隔離併發執行各個事務的能力, 使它們不會相互影響, 避免各種併發問題。

乙個事務與其他事務隔離的程度稱為隔離級別。資料庫規定了多種事務隔離級別, 不同隔離級別對應不同的干擾程度, 隔離級別越高, 資料一致性就越好, 但併發性越弱。

資料庫提供的4 種事務隔離級別:

oracle 支援的2 種事務隔離級別:read commited, serializable。oracle 預設的事務隔離級別為: read commited。 mysql 支援4 種事務隔離級別. mysql 預設的事務隔離級別為: repeatable read。

每啟動乙個mysql 程式, 就會獲得乙個單獨的資料庫連線. 每個資料庫連線都有乙個全域性變數@@tx_isolation, 表示當前的事務隔離級別。檢視當前的隔離級別的命令:select @@tx_isolation 。

設定當前mysql 連線的隔離級別: set transaction isolation level read committed;

資料庫事物

事務 sqlite預設一條語句就是乙個事務,有多少條資料就有多少次磁碟操作,比如10條計入就要10次讀寫磁碟操作。解決方法 新增事務處理,把10條操作看做乙個事務。1.sqlitedatabase 方法 public void begintransaction 開始事務 注意 事務可以巢狀,通過se...

資料庫事物

1.事物處理順序事物的sql語句 用事務 事務開始和事物提交 sql語句包裹主要執行的sql語句 事物處理可以保證一組相關操作要麼都成功,要麼都失敗.1.把事務開啟 2.寫你要執行語句 3.把事務進行提交 4.把事務回滾 rollback 遇到斷電 事務沒有提交 那麼事務會自動回滾 例如 begin...

資料庫事物

事物的概念 使用者在進行資料庫操作時的乙個資料庫操作系列。對於該操作序列中的操作,要麼全部執行,要麼全部不執行。所有的操作是乙個整體,不可分割。與事物相關的概念有事物提交和事物回滾。事物提交是將事物中對資料的更新提交到資料庫中,如果執行正常則事物結束。否則在發生異常時,事物將回滾,將資料庫狀態還原到...