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