Теория говорит, что единственный уровень изоляции, который способен к абсолютным гарантиям re.Целостность данных (в соответствии с объявленными правилами) SERIALIZABLE.
С REPEATABLE READ теоретически вы все еще подвергаетесь риску двух транзакций, пытающихся вставить одну и ту же строку, и следующей последовательности событий, позволяющих пройти это:
T1 проверяет существование строки, строка не существует
T2 проверяет существование строки, строка не существует
T1 вставляет, возможно, повторяя проверку существования строки (все еще не существует)
T2вставки, возможно повторяя проверку существования строки (все еще "не существует", потому что T1 еще не зафиксировал, поэтому его новые вставленные данные остаются невидимыми для T2).
T1 фиксирует
T2 фиксирует
REPEATABLE READ, как следует из названия, предоставляет гарантии только в отношении существующих строк (а именно: , если строка обнаружена, она не будет изменена другими транзакциями итогда чтение становится «повторяемым»).