[Sqlite] 嵌入式資料庫事務理解以及例項操作
SQLite 事務(Transaction)
事務(Transaction)是一個對資料庫執行工作單元。事務(Transaction)是以邏輯順序完成的工作單位或序列,可以是由使用者手動操作完成,也可以是由某種資料庫程式自動完成。
事務(Transaction)是指一個或多個更改資料庫的擴充套件。例如,如果您正在建立一個記錄或者更新一個記錄或者從表中刪除一個記錄,那麼您正在該表上執行事務。重要的是要控制事務以確保資料的完整性和處理資料庫錯誤。
實際上,您可以把許多的 SQLite 查詢聯合成一組,把所有這些放在一起作為事務的一部分進行執行。
1,事務的屬性
事務(Transaction)具有以下四個標準屬性,通常根據首字母縮寫為 ACID:
· 原子性(Atomicity):確保工作單位內的所有操作都成功完成,否則,事務會在出現故障時終止,之前的操作也會回滾到以前的狀態。
· 一致性(Consistency):確保資料庫在成功提交的事務上正確地改變狀態。
· 隔離性(Isolation):使事務操作相互獨立和透明。
· 永續性(Durability):確保已提交事務的結果或效果在系統發生故障的情況下仍然存在。
2,事務控制
使用下面的命令來控制事務:
· BEGIN TRANSACTION:開始事務處理。
· COMMIT:儲存更改,或者可以使用 END TRANSACTION 命令。
· ROLLBACK:回滾所做的更改。
事務控制命令只與 DML 命令 INSERT、UPDATE 和 DELETE 一起使用。他們不能在建立表或刪除表時使用,因為這些操作在資料庫中是自動提交的。
3,BEGIN TRANSACTION 命令
事務(Transaction)可以使用 BEGIN TRANSACTION 命令或簡單的 BEGIN 命令來啟動。此類事務通常會持續執行下去,直到遇到下一個 COMMIT 或 ROLLBACK 命令。不過在資料庫關閉或發生錯誤時,事務處理也會回滾。以下是啟動一個事務的簡單語法:
BEGIN;
or
BEGIN TRANSACTION;
4,COMMIT 命令
COMMIT 命令是用於把事務呼叫的更改儲存到資料庫中的事務命令。
COMMIT 命令把自上次 COMMIT 或 ROLLBACK 命令以來的所有事務儲存到資料庫。
COMMIT 命令的語法如下:
COMMIT;
or
END TRANSACTION;
5,ROLLBACK 命令
ROLLBACK 命令是用於撤消尚未儲存到資料庫的事務的事務命令。
ROLLBACK 命令只能用於撤銷自上次發出 COMMIT 或 ROLLBACK 命令以來的事務。
ROLLBACK 命令的語法如下:
ROLLBACK;
6,例項操作
[root@localhost sqlite-autoconf-3080403]# sqlite3 tim.db
SQLite version 3.8.4.3 2014-04-03 16:53:12
Enter ".help" for usage hints.
sqlite> CREATE
TABLE COMPANY(ID INT NOT NULL, NAME VARCHAR(20),AGE INT,ADDRESS
VARCHAR(20),SALARY DECIMAL(7,2));
現在,讓我們開始一個事務,並從表中刪除 age = 25 的記錄,最後,我們使用 ROLLBACK 命令撤消所有的更改。
先開啟事務,然後刪除AGE為25的記錄,查詢COMPANY表,會看到沒有這條記錄,如下圖所示:
再ROLLBACK,再去查詢COMPANY表,會看到AGE為25的記錄被恢復。
現在開啟一個事務,刪除AGE為25的記錄,再執行COMMIT提交所以的更改,那麼就不會再看到已經刪除的記錄,如下所示:
再ROLLBACK,再去查詢COMPANY表,會看到AGE為25的記錄被恢復。
現在開啟一個事務,刪除AGE為25的記錄,再執行COMMIT提交所以的更改,那麼就不會再看到已經刪除的記錄,如下所示:
參考文章地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26230597/viewspace-1260660/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android之SQLite資料庫建立和更新,以及增刪改差操作 事務AndroidSQLite資料庫
- 資料庫事務以及事務的四個特性資料庫
- 【Java】操作Sqlite資料庫JavaSQLite資料庫
- Python操作SQLite資料庫PythonSQLite資料庫
- Python 操作 SQLite 資料庫PythonSQLite資料庫
- sqlite3資料庫操作SQLite資料庫
- sqlite操作--- oracle資料庫中的資料導進sqliteSQLiteOracle資料庫
- 用Julia 0.51操作sqlite資料庫SQLite資料庫
- 使用sqlite3 模組操作sqlite3資料庫SQLite資料庫
- python用sqlite3模組操作sqlite資料庫PythonSQLite資料庫
- MySQL資料庫的事務處理用法與例項程式碼詳解MySql資料庫
- python sqlite3 資料庫操作PythonSQLite資料庫
- C++ 操作sqlite3資料庫C++SQLite資料庫
- ACCESS資料庫C#操作類(包含事務)資料庫C#
- [ 物聯網篇 ] 38 -嵌入式Sqlite資料庫加密SQLite資料庫加密
- 對 oracle 資料庫日期格式,以及對日期操作的理解Oracle資料庫
- 資料庫事務的四大特性以及事務的隔離級別資料庫
- Android 封裝AsyncTask操作Sqlite資料庫Android封裝SQLite資料庫
- C++編譯SQLite資料庫以及如何使用加密資料庫SQLCipherC++編譯SQLite資料庫加密
- 安卓開發SQLite增刪改查操作例項安卓SQLite
- oracle 資料庫例項Oracle資料庫
- 資料庫和例項資料庫
- 資料庫事務整理資料庫
- SQLite Helper類,基於.net c#的SQLite資料庫操作類SQLiteC#資料庫
- oracle例項、資料庫及相關資料庫狀態的理解和測試Oracle資料庫
- 單例項資料庫工具轉化多例項資料庫單例資料庫
- 單例項資料庫手工轉化多例項資料庫單例資料庫
- C#快速搭建模型資料庫SQLite操作C#模型資料庫SQLite
- sqlite 資料庫 支援的資料型別 以及常用的函式SQLite資料庫資料型別函式
- 在Laravel中使用資料庫事務以及捕獲事務失敗後的異常Laravel資料庫
- 資料庫事務併發產生的問題以及事務的隔離級別資料庫
- 【PHP】Yii2中事務的使用以及程式碼例項PHP
- 資料庫事務與 MySQL 事務總結資料庫MySql
- 多例項資料庫刪除例項資料庫
- 資料庫例項 (SQL Server)資料庫SQLServer
- 資料庫設計例項資料庫
- 資料庫映象和跨資料庫事務資料庫
- 資料庫歸檔以及flashbak操作資料庫