SQLite進(jìn)階-18.事務(wù)

SQLite事務(wù)

事務(wù)(Transaction) 是一個(gè)對(duì)數(shù)據(jù)庫(kù)執(zhí)行工作單元。事務(wù)是以邏輯順序完成的工作單元或序列,可以是由用戶手動(dòng)操作完成,也可以是由某種數(shù)據(jù)庫(kù)程序自動(dòng)完成。

事務(wù)是指一個(gè)或者多個(gè)改變數(shù)據(jù)庫(kù)的擴(kuò)展。例如:如果你正在創(chuàng)建一個(gè)記錄或者更新一個(gè)記錄或者從表中刪除一個(gè)記錄,那么你正在該表上執(zhí)行事務(wù)。重要的是要控制事務(wù)以確保數(shù)據(jù)的完整性和處理數(shù)據(jù)庫(kù)錯(cuò)誤。
實(shí)際上,你可以把許多的SQLite查詢聯(lián)合成一組,把所有這些放在一起作為事務(wù)的一部分進(jìn)行執(zhí)行。

事務(wù)的屬性

事務(wù)(Transaction)具有以下四個(gè)標(biāo)準(zhǔn)屬性,通常根據(jù)首字母縮寫為ACID:

  • 原子性(Atomicity): 確保工作單位內(nèi)的所有操作都成功完成,否則,事務(wù)會(huì)在出現(xiàn)故障時(shí)終止,之前的操作也會(huì)回滾到以前的狀態(tài)。
  • 一致性(Consistency): 確保數(shù)據(jù)庫(kù)在成功提交的事務(wù)上正確的改變狀態(tài)。
  • 隔離性(Isolation): 使事務(wù)操作相互獨(dú)立和透明。
  • 持久性(Durability): 確保已提交事務(wù)的結(jié)果或效果在系統(tǒng)發(fā)生故障的情況下仍然存在。

事務(wù)控制

使用下面的命令來(lái)控制事務(wù):

  • BEGIN TRANSACTION: 開始事務(wù)處理。
  • COMMIT: 保持更改,或者可以使用END TRANSACTION命令。
  • ROLLBACK: 回滾所做的更改。

事務(wù)控制命令只與DML命令I(lǐng)NSERT、UPDATE、DELETE一起使用。他們不能再創(chuàng)建表或刪除表時(shí)使用,因?yàn)檫@些操作在數(shù)據(jù)庫(kù)中是自動(dòng)提交的。

BEGIN TRANSACTION命令

事務(wù)(Transaction)可以使用BEGIN TRANSACTION命令或簡(jiǎn)單的BEGIN命令來(lái)啟動(dòng)。此類事務(wù)通常會(huì)持續(xù)執(zhí)行下去,直到遇到下一個(gè)COMMIT或ROLLBACK命令。不過(guò)在數(shù)據(jù)庫(kù)關(guān)閉或發(fā)生錯(cuò)誤時(shí),事務(wù)處理也會(huì)回滾。以下是啟動(dòng)一個(gè)事務(wù)的簡(jiǎn)單語(yǔ)法:

BEGIN;

or

BEGIN TRANSACTION;

COMMIT命令

COMMIT命令是用于把事務(wù)調(diào)用的更改保持到數(shù)據(jù)庫(kù)中的事務(wù)命令。
COMMIT命令把自上次COMMIT或ROLLBACK命令以來(lái)的所有事務(wù)保存到數(shù)據(jù)庫(kù)。
COMMIT命令的語(yǔ)法如下:

COMMIT;

or

END TRANSACTION;

ROLLBACK命令

ROLLBACK命令是用于撤銷尚未保存到數(shù)據(jù)庫(kù)的事務(wù)的事務(wù)命令。
ROLLBACK命令只能用于撤銷自上次發(fā)出COMMIT或ROLLBACK命令以來(lái)的事務(wù)。
ROLLBACK命令的語(yǔ)法如下:

ROLLBACK;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容