朱杰兵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條記錄,這就產生了幻像讀。

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


          網站導航:
           
          主站蜘蛛池模板: 都兰县| 临颍县| 芒康县| 郸城县| 莱芜市| 专栏| 巴南区| 卢湾区| 微博| 新绛县| 光泽县| 定远县| 徐州市| 昌平区| 中超| 台中县| 巫山县| 茶陵县| 电白县| 溆浦县| 文安县| 江北区| 乐清市| 大姚县| 龙海市| 区。| 台州市| 安多县| 永清县| 克山县| 昭平县| 秦皇岛市| 舞钢市| 哈密市| 齐齐哈尔市| 凯里市| 涪陵区| 德阳市| 星座| 邯郸县| 文化|