事務具備如下屬性:
1. 原子性:一個事務要被徹底性的無二義性的作完或者撤銷,在任何一個操做出現錯誤的狀況下,構成事務全部操做所形成的效果都必須被撤銷,數據應該被回滾到之前的狀態。
2. 一致性:一個事務應該保護全部定義在數據上的不變的屬性(例如完整性約束)。在完成了一個成功的事務時,數據應處於一致的狀態。換句話說,一個事務應該把系統從一個一致-狀態轉換到另外一個一致狀態。舉個例子,在關係數據庫的狀況下,
一個一致的事務將保護定義在數據上的全部完整性約束。
3. 隔離性:在同一個環境中可能有多個事務併發執行,而每一個事務都應表現爲獨立執行。串行的執行一系列事務的效果應該同於併發的執行它們。這要求兩件事:
在一個事務執行過程當中,數據的中間的(可能不一致)狀態不該該被暴露給全部的其餘事務。
兩個併發的事務應該不能操做同一項數據。數據庫管理系統一般使用鎖來實現這個特徵。
4. 持久性:事務形成的改動是持久的
簡單來講,事務一旦開始執行,只有兩條路徑,一是完整的正確的執行下去,二是在某一步驟出現錯誤,就回滾到未執行此事務的狀態。
何時會用到事務呢?在執行一系列數據庫操做時,要保證這些操做必須徹底正確執行,不然就不執行,在這種狀況下,適合使用事務,例如將一些數據插入到兩個相關聯的表中,並且不能只有一張表插入成功,這種狀況下,使用事務,不管是否插入成功,都不會對數據庫形成很差的影響。
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">數據庫