MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          一個事務的問題

          Posted on 2008-06-26 11:24 leekiang 閱讀(406) 評論(0)  編輯  收藏 所屬分類: jdbc、事務、并發
          我單位物資系統:庫存表kcb,庫存明細kcmx?

          當發生一筆動態的時候,先查詢庫存表中的庫存數量,然后加上增減數量,得到新庫存,update,commit;?

          接著把庫存數量,增減數量,更改時間分別插入到庫存明細:前次數量,增減數量,更改時間。?

          問 題:現在有兩條數據更改時間很接近? a? 10:51:47:01b? 10:51:46:25? .也就是說兩條數據先后更新,而且更新的是同樣一筆物資。于是,a? 條記錄得到的前存數量和b條記錄得到的前存數量一樣,(好像叫讀臟數?)于是記錄b的更新就被當作不存在了!?

          系統在隨后的更新中查到的是記錄a更新候的數據,一切正常,唯有記錄b? 被忽略了;(于是庫存錯了,領導批了)?

          ?

          還有一個奇怪的問題,就是庫存明細的查詢是用存儲過程作的,為什么select到pb的數據窗口之后別的數據都是按時間順序排列,唯有上面兩條,a在b之前!時間也會錯?相差太近??

          我以后怎么辦?高人教我

          http://blog.csdn.net/qiume/archive/2009/02/26/3938382.aspx
          對數據庫中的數據修改都是在內存中完成的,這些修改的結果可能已經寫到硬盤也可能沒有寫到硬盤,如果在操作過程中,發生斷電或系統錯誤等故障,數據庫可以 保證未結束的事務對數據庫的數據修改結果即使已經寫入磁盤,在下次數據庫啟動后也會被全部撤銷;而對于結束的事務,即使其修改的結果還未寫入磁盤,在數據 庫下次啟動后會通過事務日志中的記錄進行“重做”,即把丟失的數據修改結果重新生成,并寫入磁盤,從而保證結束事務對數據修改的永久化。這樣也保證了事務 中的操作要么全部完成,要么全部撤銷。
          主站蜘蛛池模板: 苍梧县| 宜章县| 化州市| 沙雅县| 根河市| 铜川市| 灵寿县| 邵阳县| 兴山县| 孟州市| 怀化市| 峨山| 伊金霍洛旗| 全椒县| 万年县| 林口县| 抚宁县| 汉阴县| 白玉县| 重庆市| 尖扎县| 垦利县| 临西县| 正阳县| 绥棱县| 普安县| 方山县| 江门市| 都安| 资溪县| 香格里拉县| 洱源县| 巍山| 新蔡县| 正镶白旗| 泰安市| 招远市| 义马市| 上栗县| 建宁县| 呼玛县|