朱杰兵blog

          jonhney'blog
          posts - 140, comments - 1, trackbacks - 0, articles - 0

          不可重復讀和幻讀的區別

          Posted on 2015-06-02 09:11 朱杰兵 閱讀(231) 評論(0)  編輯  收藏

          不可重復讀

          不可重復讀的重點是修改:

          同樣的條件, 你讀取過的數據, 再次讀取出來發現值不一樣了

          例子:

          在事務1中,Mary 讀取了自己的工資為1000,操作并沒有完成 

          Java代碼  收藏代碼
          1. con1 = getConnection();  
          2. select salary from employee empId ="Mary";  


          在事務2中,這時財務人員修改了Mary的工資為2000,并提交了事務. 
          Java代碼  收藏代碼
          1. con2 = getConnection();  
          2. update employee set salary = 2000;  
          3. con2.commit();  


          在事務1中,Mary 再次讀取自己的工資時,工資變為了2000 
          Java代碼  收藏代碼
          1. //con1  
          2. select salary from employee empId ="Mary";  


          在一個事務中前后兩次讀取的結果并不致,導致了不可重復讀。


          幻讀

          幻讀的重點在于新增或者刪除

          同樣的條件, 第1次和第2次讀出來的記錄數不一樣

          例子:

          目前工資為1000的員工有10人。 
          事務1,讀取所有工資為1000的員工。 

          Java代碼  收藏代碼
          1. con1 = getConnection();  
          2. Select * from employee where salary =1000;  
          共讀取10條記錄 

          這時另一個事務向employee表插入了一條員工記錄,工資也為1000 
          Java代碼  收藏代碼
          1. con2 = getConnection();  
          2. Insert into employee(empId,salary) values("Lili",1000);  
          3. con2.commit();  


          事務1再次讀取所有工資為1000的員工 
          Java代碼  收藏代碼
          1. //con1  
          2. select * from employee where salary =1000;  


          共讀取到了11條記錄,這就產生了幻像讀。

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


          網站導航:
           
          主站蜘蛛池模板: 信阳市| 兴隆县| 郁南县| 布拖县| 临清市| 延吉市| 永年县| 梁平县| 文化| 罗定市| 基隆市| 龙口市| 渭南市| 大宁县| 宁津县| 东莞市| 霸州市| 上虞市| 沾化县| 漳平市| 商河县| 临武县| 清镇市| 桐梓县| 海南省| 江孜县| 徐闻县| 湘乡市| 滨海县| 南郑县| 新龙县| 珠海市| 陈巴尔虎旗| 星子县| 藁城市| 衡山县| 盐津县| 吉水县| 萨迦县| 通道| 内黄县|