qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          嵌入式數據庫事務理解以及實例操作

          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提交所以的更改,那么就不會再看到已經刪除的記錄,如下所示:

          posted on 2014-09-04 09:50 順其自然EVO 閱讀(172) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2014年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 隆子县| 怀安县| 项城市| 常德市| 宝山区| 仁寿县| 屯门区| 黄石市| 舞钢市| 宣恩县| 邯郸市| 铅山县| 周至县| 宣汉县| 阿坝县| 光山县| 绵阳市| 许昌市| 茶陵县| 宝清县| 宜兰市| 疏附县| 大新县| 开化县| 西和县| 荔浦县| 九台市| 麟游县| 彭泽县| 元朗区| 登封市| 什邡市| 伊金霍洛旗| 扶风县| 光山县| 泾川县| 通州市| 凤台县| 河北区| 富锦市| 公主岭市|