不可重復讀
不可重復讀的重點是修改:
同樣的條件, 你讀取過的數據, 再次讀取出來發現值不一樣了
例子:
在事務1中,Mary 讀取了自己的工資為1000,操作并沒有完成
在事務2中,這時財務人員修改了Mary的工資為2000,并提交了事務.
在事務1中,Mary 再次讀取自己的工資時,工資變為了2000
在一個事務中前后兩次讀取的結果并不致,導致了不可重復讀。
幻讀
幻讀的重點在于新增或者刪除同樣的條件, 第1次和第2次讀出來的記錄數不一樣
例子:
目前工資為1000的員工有10人。
事務1,讀取所有工資為1000的員工。
這時另一個事務向employee表插入了一條員工記錄,工資也為1000
- con2 = getConnection();
- Insert into employee(empId,salary) values("Lili",1000);
- con2.commit();
事務1再次讀取所有工資為1000的員工
共讀取到了11條記錄,這就產生了幻像讀。