1、臟讀:一個事務讀到另外一個事務還沒有提交的數據。
解決方法:把事務隔離級別調整到READ COMMITTED,即SET TRAN ISOLATION LEVEL READ COMMITTED。這時我們重復上面的動作會發現事務二會一直等到事務一執行完畢再返回結果,因為此時事務以已經把自己的更改ROLLBACK了,所以事務二可以返回正確的結果。
2、更新丟失:
3、 不可重復讀:一個事務先后讀取同一條記錄,但兩次讀取的數據不同。
解決方法:把事務隔離級別調整到REPEATABLE READ。使用SET TRAN ISOLATION LEVEL REPEATABLE READ。這時我們重復上面的動作會發現事務二會一直等到事務一執行完畢再返回結果。
4、幻象讀:一個事務先后讀取一個范圍的記錄,但兩次讀取的紀錄數不同。
解決方法:把事務隔離級別調整到SERIALIZABLE。使用SET TRAN ISOLATION LEVEL SERIALIZABLE。這時我們重復上面的動作會發現事務二會一直等到事務一執行完畢再返回結果。