qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          數(shù)據(jù)庫中的事物處理

           數(shù)據(jù)庫
            數(shù)據(jù)庫的更新通常都是由客觀世界的所發(fā)生的事件引起的。為保證數(shù)據(jù)庫內(nèi)容的一致,就要將數(shù)據(jù)庫的一組操作作為一個整體來進行,要么全部成功完成,要么全部失敗退出。如果由于故障或其它原因而使一組操作中有一些完成,有一些未完成,則必然會使得數(shù)據(jù)庫中的數(shù)據(jù)出現(xiàn)不一致,從而使得數(shù)據(jù)庫的完整性受到破壞。因此,更新操作序列必須作為一個整體在DBMS執(zhí)行時出現(xiàn),即“要么全做,要么全不做”。SQL提供了事務(wù)處理的機制,來幫助DBMS實現(xiàn)上述的功能。
            事務(wù)處理
            事務(wù)處理(TRANSACTION)的每個語句是由一個或多個SQL語句序列結(jié)合在一起所形成的一個邏輯處理單元。事務(wù)處理中句都是完成整個任務(wù)的一部分工作,所有的語句組織在一起能夠完成某一特定的任務(wù)。DBMS在對事務(wù)處理中的語句進行處理時,是按照下面的約定來進行的,這就是“事務(wù)處理中的所有語句被作為一個原子工作單位,所有的語句既可成功地被執(zhí)行,也可以沒有任何一個語句被執(zhí)行”。DBMS負責完成這種約定,即使在事務(wù)處理中應(yīng)用程序異常退出,或者是硬件出現(xiàn)故障等各種意外情況下,也是如此。在任何意外情況下,DBMS都負責確保在系統(tǒng)恢復正常后,數(shù)據(jù)庫內(nèi)容決不會出現(xiàn)“部分事務(wù)處理中的語句被執(zhí)行完”的情況。
            sql語言
            sql語言為事務(wù)處理提供了兩個重要的語句,它們是COMMIT和ROLLBACK語句。它們的使用格式是:
            COMMIT WORK
            ROLLBACK WORK
            COMMIT語句用于告訴DMBS,事務(wù)處理中的語句被成功執(zhí)行完成了。被成功執(zhí)行完成后,數(shù)據(jù)庫內(nèi)容將是完整的。而ROLLBACK語句則是用于告訴DBMS,事務(wù)處理中的語句不能被成功執(zhí)行。這時候,DBMS將恢復本次事務(wù)處理期間對數(shù)據(jù)庫所進行的修改,使之恢復到本次事務(wù)處理之前的狀態(tài)。
            事務(wù)處理:
          QSqlDatabase::database().transaction();
          QSqlQuery query;
          query.exec("SELECT id FROM employee WHERE name = 'Torild Halvorsen'");
          if (query.next())
          {
          int employeeId = query.value(0).toInt();
          query.exec("INSERT INTO project (id, name, ownerid) "
          "VALUES (201, 'Manhattan Project', "
          + QString::number(employeeId) + ")");
          }
          QSqlDatabase::database().commit();
            如果數(shù)據(jù)庫引擎支持事務(wù)處理,則函數(shù)QSqlDriver::hasFeature(QSqlDriver::Transactions)將返回 真。
            可以通過調(diào)用QSqlDatabase::transaction()來初始化一個事務(wù)處理。之后執(zhí)行你想在該事務(wù)處理的工作。
            完了再執(zhí)行QSqlDatabase::commit()來提交事務(wù)處理或QSqlDatabase::rollback()取消事務(wù)處理。

          posted on 2014-09-16 09:51 順其自然EVO 閱讀(197) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          導航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 且末县| 黄大仙区| 鄂托克旗| 东方市| 特克斯县| 南涧| 通许县| 林甸县| 巨野县| 兴化市| 柳州市| 牟定县| 额敏县| 张家口市| 霍邱县| 桑植县| 策勒县| 大化| 柳林县| 宁化县| 岱山县| 土默特左旗| 图木舒克市| 友谊县| 河曲县| 江阴市| 白银市| 五华县| 临汾市| 江陵县| 阳高县| 绥宁县| 大同市| 青阳县| 自贡市| 金阳县| 保亭| 赤城县| 万载县| 西畴县| 华亭县|