數據操作控制

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

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


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


          網站導航:
           
          <2007年1月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 茂名市| 甘洛县| 辽源市| 新乡县| 苏州市| 安泽县| 岳阳县| 瓮安县| 民丰县| 教育| 康平县| 长岛县| 虎林市| 崇明县| 乌拉特后旗| 金乡县| 连江县| 凌源市| 福海县| 彩票| 庆阳市| 建瓯市| 肇州县| 青神县| 长乐市| 井研县| 凉城县| 临邑县| 东海县| 东明县| 从江县| 晋州市| 三门县| 昭平县| 普兰县| 西吉县| 张掖市| 吉木乃县| 应用必备| 皮山县| 会泽县|