qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          嵌入式數(shù)據(jù)庫(kù)事務(wù)理解以及實(shí)例操作

          SQLite 事務(wù)(Transaction)
            事務(wù)(Transaction)是一個(gè)對(duì)數(shù)據(jù)庫(kù)執(zhí)行工作單元。事務(wù)(Transaction)是以邏輯順序完成的工作單位或序列,可以是由用戶手動(dòng)操作完成,也可以是由某種數(shù)據(jù)庫(kù)程序自動(dòng)完成。
            事務(wù)(Transaction)是指一個(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í)行。
            1,事務(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ā)生故障的情況下仍然存在。
            2,事務(wù)控制
            使用下面的命令來(lái)控制事務(wù):
            ·BEGIN TRANSACTION:開(kāi)始事務(wù)處理。
            ·COMMIT:保存更改,或者可以使用 END TRANSACTION 命令。
            ·ROLLBACK:回滾所做的更改。
            事務(wù)控制命令只與 DML 命令 INSERT、UPDATE 和 DELETE 一起使用。他們不能在創(chuàng)建表或刪除表時(shí)使用,因?yàn)檫@些操作在數(shù)據(jù)庫(kù)中是自動(dòng)提交的。
            3,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;
            4,COMMIT 命令
            COMMIT 命令是用于把事務(wù)調(diào)用的更改保存到數(shù)據(jù)庫(kù)中的事務(wù)命令。
            COMMIT 命令把自上次 COMMIT 或 ROLLBACK 命令以來(lái)的所有事務(wù)保存到數(shù)據(jù)庫(kù)。
            COMMIT 命令的語(yǔ)法如下:
            COMMIT;
            or
            END TRANSACTION;
            5,ROLLBACK 命令
            ROLLBACK 命令是用于撤消尚未保存到數(shù)據(jù)庫(kù)的事務(wù)的事務(wù)命令。
            ROLLBACK 命令只能用于撤銷自上次發(fā)出 COMMIT 或 ROLLBACK 命令以來(lái)的事務(wù)。
            ROLLBACK 命令的語(yǔ)法如下:
            ROLLBACK;
            6,實(shí)例操作
            [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));
            現(xiàn)在,讓我們開(kāi)始一個(gè)事務(wù),并從表中刪除 age = 25 的記錄,最后,我們使用 ROLLBACK 命令撤消所有的更改。
            先開(kāi)啟事務(wù),然后刪除AGE為25的記錄,查詢COMPANY表,會(huì)看到?jīng)]有這條記錄,如下圖所示:
            再ROLLBACK,再去查詢COMPANY表,會(huì)看到AGE為25的記錄被恢復(fù)。
            現(xiàn)在開(kāi)啟一個(gè)事務(wù),刪除AGE為25的記錄,再執(zhí)行COMMIT提交所以的更改,那么就不會(huì)再看到已經(jīng)刪除的記錄,如下所示:
            再ROLLBACK,再去查詢COMPANY表,會(huì)看到AGE為25的記錄被恢復(fù)。
            現(xiàn)在開(kāi)啟一個(gè)事務(wù),刪除AGE為25的記錄,再執(zhí)行COMMIT提交所以的更改,那么就不會(huì)再看到已經(jīng)刪除的記錄,如下所示:

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


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2014年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 闽侯县| 县级市| 安陆市| 西吉县| 定安县| 漳浦县| 延长县| 永德县| 肇源县| 沅陵县| 娄烦县| 介休市| 龙游县| 宜章县| 思南县| 汶川县| 丹棱县| 岳阳县| 仙游县| 伊金霍洛旗| 莲花县| 丰镇市| 晋宁县| 翁源县| 泗水县| 甘南县| 滦南县| 浠水县| 大同市| 通山县| 壶关县| 资源县| 行唐县| 古田县| 波密县| 陈巴尔虎旗| 郧西县| 博湖县| 鞍山市| 金山区| 辰溪县|