數(shù)據(jù)操作控制

          ??????1.當(dāng)執(zhí)行一個(gè)功能的時(shí)候需要執(zhí)行多個(gè)更新操作,如:插入多個(gè)對(duì)象,刪除多個(gè)對(duì)象等,就可能存在執(zhí)行一個(gè)更新操作成功之后下一個(gè)更新操作失敗,那么這個(gè)功能的執(zhí)行就算是失敗的,可是卻向數(shù)據(jù)庫添加或刪除了不完全的相關(guān)數(shù)據(jù),所以就會(huì)出現(xiàn)臟數(shù)據(jù)
          ??????解決方法:
          ??????1) 通過事物控制讓多個(gè)執(zhí)行語句一起提交commit,commit失敗的話就回滾rollback,做到事物的原子性原則
          ??????2) 在數(shù)據(jù)庫設(shè)置一個(gè)操作成功或失敗的字段(或者本地臨時(shí)文件里存放相關(guān)的控制數(shù)據(jù)),通過該字段進(jìn)行控制,在執(zhí)行出錯(cuò)后刪除所有含有操作失敗字段的數(shù)據(jù)
          ???????
          ??????2.數(shù)據(jù)庫同步訪問控制:比如說一條記錄有兩個(gè)以上的用戶同時(shí)訪問,他們讀取出來的是相同的數(shù)據(jù),但寫入時(shí)有先后,如果不做控制就會(huì)出現(xiàn)后來寫入的數(shù)據(jù)把原來做了更新的數(shù)據(jù)覆蓋,使原來做的更新操作丟失就是無效,因?yàn)樗麄兌际窃谧钤甲x取出來的數(shù)據(jù)上做的修改,而不是在別人做了修改后的數(shù)據(jù)上做修改
          ??????解決方法:
          ??????1) 可以在數(shù)據(jù)庫多設(shè)置一個(gè)版本字段來控制該數(shù)據(jù)的歷史版本號(hào)(或者本地臨時(shí)文件里存放相關(guān)的控制數(shù)據(jù)),就是沒個(gè)人做了修改以后都要更新一下這個(gè)版本字段,同時(shí)更新之前也要做一下版本的比較,如果現(xiàn)在的版本和之前取出來的數(shù)據(jù)的版本不一樣,那么就要從新讀取數(shù)據(jù)再寫入,這樣就可以保證不會(huì)丟失修改
          ?????

          posted on 2007-01-14 12:00 JGAO編程隨筆 閱讀(180) 評(píng)論(0)  編輯  收藏


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


          網(wǎng)站導(dǎo)航:
           
          <2007年1月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 建水县| 景德镇市| 武胜县| 调兵山市| 拉萨市| 鸡泽县| 广汉市| 河曲县| 浮山县| 沭阳县| 云安县| 婺源县| 荔浦县| 监利县| 扎赉特旗| 江油市| 志丹县| 雷州市| 蒙城县| 乌拉特前旗| 繁峙县| 维西| 探索| 利川市| 乌拉特后旗| 西宁市| 卢湾区| 勐海县| 舟山市| 自贡市| 汽车| 新田县| 南开区| 黄浦区| 长沙县| 凤山县| 广东省| 边坝县| 临洮县| 泸定县| 江孜县|