REPEATABLE READ izolyasiya darajasi READ COMMITTED izolyatsiya darajasidan farqli o'laroq, REPEATABLE READ izolyatsiya darajasi o`qilgan barcha ma`lumotlarga umumiy qulflarni o'rnatadi va tranzaksiya bajarilguncha(commit komandasi bajarilguncha) yoki bekor qilinguncha ushbu blokirovkani ushlab turadi. Shuning uchun, bu holda, tranzaksiya doirasida aynan bitta so'rovni ko'p marta bajarish har doim bir xil natijani beradi. Ushbu izolyatsiya darajasining kamchiligi shundaki, parallel murojaat qilish imkoniyati yanada yomonlashadi, chunki boshqa tranzaksiyalar qulflangan ma`lumotlarni yangilay olmaydi.
Ushbu izolyatsiya darajasi boshqa instruksiyalarga yangi qatorlarni qo’shishdan blokirovka qilmaydi, natijada tranzaksiya ichida aynan bir xil o`qish(select) so’rovi turli qatorlarni qaytarishi mumkin, ya’ni fantomlarga olib kelishi mumkin.
Tranzaksiya 1
Tranzaksiya 2
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
--SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
BEGIN TRAN;
SELECT Value
FROM Table1
WHERE Id = 1;
WAITFOR DELAY '00:00:10';
SELECT Value
FROM Table1
WHERE Id = 1;
COMMIT;
BEGIN TRAN;
UPDATE Table1
SET Value = 42
WHERE Id = 1;
COMMIT TRAN;