SQLite事務(wù)
事務(wù)(Transaction) 是一個對數(shù)據(jù)庫執(zhí)行工作單元荣病。事務(wù)是以邏輯順序完成的工作單元或序列,可以是由用戶手動操作完成喷鸽,也可以是由某種數(shù)據(jù)庫程序自動完成众雷。
事務(wù)是指一個或者多個改變數(shù)據(jù)庫的擴(kuò)展。例如:如果你正在創(chuàng)建一個記錄或者更新一個記錄或者從表中刪除一個記錄做祝,那么你正在該表上執(zhí)行事務(wù)砾省。重要的是要控制事務(wù)以確保數(shù)據(jù)的完整性和處理數(shù)據(jù)庫錯誤。
實際上混槐,你可以把許多的SQLite查詢聯(lián)合成一組编兄,把所有這些放在一起作為事務(wù)的一部分進(jìn)行執(zhí)行。
事務(wù)的屬性
事務(wù)(Transaction)具有以下四個標(biāo)準(zhǔn)屬性声登,通常根據(jù)首字母縮寫為ACID:
- 原子性(Atomicity): 確保工作單位內(nèi)的所有操作都成功完成狠鸳,否則,事務(wù)會在出現(xiàn)故障時終止悯嗓,之前的操作也會回滾到以前的狀態(tài)件舵。
- 一致性(Consistency): 確保數(shù)據(jù)庫在成功提交的事務(wù)上正確的改變狀態(tài)。
- 隔離性(Isolation): 使事務(wù)操作相互獨立和透明脯厨。
- 持久性(Durability): 確保已提交事務(wù)的結(jié)果或效果在系統(tǒng)發(fā)生故障的情況下仍然存在铅祸。
事務(wù)控制
使用下面的命令來控制事務(wù):
- BEGIN TRANSACTION: 開始事務(wù)處理。
- COMMIT: 保持更改合武,或者可以使用END TRANSACTION命令临梗。
- ROLLBACK: 回滾所做的更改。
事務(wù)控制命令只與DML命令I(lǐng)NSERT稼跳、UPDATE盟庞、DELETE一起使用。他們不能再創(chuàng)建表或刪除表時使用汤善,因為這些操作在數(shù)據(jù)庫中是自動提交的什猖。
BEGIN TRANSACTION命令
事務(wù)(Transaction)可以使用BEGIN TRANSACTION命令或簡單的BEGIN命令來啟動。此類事務(wù)通常會持續(xù)執(zhí)行下去红淡,直到遇到下一個COMMIT或ROLLBACK命令卸伞。不過在數(shù)據(jù)庫關(guān)閉或發(fā)生錯誤時,事務(wù)處理也會回滾锉屈。以下是啟動一個事務(wù)的簡單語法:
BEGIN;
or
BEGIN TRANSACTION;
COMMIT命令
COMMIT命令是用于把事務(wù)調(diào)用的更改保持到數(shù)據(jù)庫中的事務(wù)命令荤傲。
COMMIT命令把自上次COMMIT或ROLLBACK命令以來的所有事務(wù)保存到數(shù)據(jù)庫。
COMMIT命令的語法如下:
COMMIT;
or
END TRANSACTION;
ROLLBACK命令
ROLLBACK命令是用于撤銷尚未保存到數(shù)據(jù)庫的事務(wù)的事務(wù)命令颈渊。
ROLLBACK命令只能用于撤銷自上次發(fā)出COMMIT或ROLLBACK命令以來的事務(wù)遂黍。
ROLLBACK命令的語法如下:
ROLLBACK;