亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

SQLite 事務(wù)

事務(wù)是針對(duì)數(shù)據(jù)庫(kù)執(zhí)行的工作單元。事務(wù)是以邏輯順序完成的單位或工作順序,無論是由用戶手動(dòng)完成還是由某種數(shù)據(jù)庫(kù)程序自動(dòng)完成。

事務(wù)是將一個(gè)或多個(gè)更改傳播到數(shù)據(jù)庫(kù)。例如,如果您要在表中創(chuàng)建,更新或刪除記錄,那么您將在表上執(zhí)行事務(wù)??刂剖聞?wù)以確保數(shù)據(jù)完整性和處理數(shù)據(jù)庫(kù)錯(cuò)誤很重要。

實(shí)際上,您會(huì)將許多SQLite查詢組成一個(gè)組,并將它們作為事務(wù)的一部分一起執(zhí)行。

事務(wù)屬性

事務(wù)具有以下四個(gè)標(biāo)準(zhǔn)屬性,通常由首字母縮寫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ù)控制

以下是用于控制事務(wù)的以下命令:

  • BEGIN TRANSACTION ?開始事務(wù)。

  • COMMIT?要保存更改,也可以使用END TRANSACTION命令。

  • ROLLBACK ?回滾更改。

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

BEGIN TRANSACTION 命令

可以使用BEGIN TRANSACTION或簡(jiǎn)單地使用BEGIN命令來啟動(dòng)事務(wù)。這樣的事務(wù)通常會(huì)持續(xù)到遇到下一個(gè)COMMIT或ROLLBACK命令為止。但是,如果數(shù)據(jù)庫(kù)關(guān)閉或發(fā)生錯(cuò)誤,則事務(wù)也將回滾。以下是啟動(dòng)事務(wù)的簡(jiǎn)單語(yǔ)法。

BEGIN;
or 
BEGIN TRANSACTION;

COMMIT 命令

COMMIT命令是用于將事務(wù)調(diào)用的更改保存到數(shù)據(jù)庫(kù)的事務(wù)性命令。

自上一個(gè)COMMIT或ROLLBACK命令以來,COMMIT命令將所有事務(wù)保存到數(shù)據(jù)庫(kù)中。

以下是COMMIT命令的語(yǔ)法。

COMMIT;
or
END TRANSACTION;

ROLLBACK 命令

ROLLBACK命令是用于撤消尚未保存到數(shù)據(jù)庫(kù)的事務(wù)的事務(wù)性命令。

自上次發(fā)出COMMIT或ROLLBACK命令以來,ROLLBACK命令只能用于撤消事務(wù)。

以下是ROLLBACK命令的語(yǔ)法。

ROLLBACK;

在線示例

帶有以下記錄的COMPANY表。

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

現(xiàn)在,讓我們開始一個(gè)事務(wù)并從age = 25的表中刪除記錄。然后,使用ROLLBACK命令撤消所有更改。

sqlite> BEGIN;
sqlite> DELETE FROM COMPANY WHERE AGE = 25;
sqlite> ROLLBACK;

現(xiàn)在,如果您檢查COMPANY表,它仍然具有以下記錄-

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

讓我們開始另一個(gè)事務(wù),并從AGE= 25的表中刪除記錄,最后我們使用COMMIT命令來提交所有更改。

sqlite> BEGIN;
sqlite> DELETE FROM COMPANY WHERE AGE = 25;
sqlite> COMMIT;

如果現(xiàn)在檢查COMPANY表仍然具有以下記錄-

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0