標籤:
事務(Transaction)
事務(Transaction)是一個對資料庫執行工作單元。事務(Transaction)是以邏輯順序完成的工作單位或序列,可以是由使用者手動操作完成,也可以是由某種資料庫程式自動完成。
事務(Transaction)是指一個或多個更改資料庫的擴充。例如,如果您正在建立一個記錄或者更新一個記錄或者從表中刪除一個記錄,那麼您正在該表上執行事務。重要的是要控制事務以確保資料的完整性和處理資料庫錯誤。
實際上,您可以把許多的 SQLite 查詢聯合成一組,把所有這些放在一起作為事務的一部分進行執行。 事務的屬性
事務(Transaction)具有以下四個標準屬性,通常根據首字母縮寫為 ACID:
-
原子性(Atomicity):確保工作單位內的所有操作都成功完成,否則,事務會在出現故障時終止,之前的操作也會復原到以前的狀態。
-
一致性(Consistency):確保資料庫在成功提交的事務上正確地改變狀態。
-
隔離性(Isolation):使事務操作相互獨立和透明。
- 持久性(Durability):確保已提交事務的結果或效果在系統發生故障的情況下仍然存在。
事務控制
使用下面的命令來控制事務:
事務控制命令只與 DML 命令 INSERT、UPDATE 和 DELETE 一起使用。他們不能在建立表或刪除表時使用,因為這些操作在資料庫中是自動認可的。
----------------------------------------------------------------------
舉例:
1:開啟事物--事物處理--事物提交
sqlite> BEGIN TRANSACTION;
sqlite> INSERT INTO COMPANY VALUES(6,‘LiF‘,45,‘Home‘,600000.0);
sqlite> select*from COMPANY;
1|LiA|20|China|100000.0
2|LiB|25|America|200000.0
3|LiC|30|earth|300000.0
5|LIE|40|Ground|500000.0
6|LiF|45|Home|600000.0
sqlite> COMMIT TRANSACTION;
sqlite> select*from COMPANY;
1|LiA|20|China|100000.0
2|LiB|25|America|200000.0
3|LiC|30|earth|300000.0
5|LIE|40|Ground|500000.0
6|LiF|45|Home|600000.0
-------------------------------------------------------------------
2:開啟事物--事物處理--事物處理復原(事物處理取消)
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS TEXT , SALARY REAL );
INSERT INTO "COMPANY" VALUES(1,‘LiA‘,20,‘China‘,100000.0);
INSERT INTO "COMPANY" VALUES(2,‘LiB‘,25,‘America‘,200000.0);
INSERT INTO "COMPANY" VALUES(3,‘LiC‘,30,‘earth‘,300000.0);
COMMIT;
sqlite> BEGIN TRANSACTION;
sqlite> INSERT INTO COMPANY VALUES(4,‘LiC‘,35,‘Air‘,400000.0);
sqlite> select*from COMPANY;
1|LiA|20|China|100000.0
2|LiB|25|America|200000.0
3|LiC|30|earth|300000.0
4|LiC|35|Air|400000.0
sqlite> ROLLBACK TRANSACTION;
sqlite> select*from COMPANY;
1|LiA|20|China|100000.0
2|LiB|25|America|200000.0
3|LiC|30|earth|300000.0
sqlite>
SQLite-進階-事務(Transaction)