Ответ
В SQL есть 4 уровня изоляции транзакций (по стандарту ANSI SQL):
-
Read Uncommitted - самая слабая изоляция. Позволяет читать "грязные" данные (незакоммиченные изменения других транзакций). Может приводить к "грязному чтению".
-
Read Committed - предотвращает грязное чтение, но допускает "неповторяющееся чтение" (другая транзакция может изменить данные между повторными чтениями).
-
Repeatable Read - гарантирует, что при повторном чтении в рамках одной транзакции данные не изменятся. Но возможна "фантомное чтение" (появление новых строк).
-
Serializable - самый строгий уровень. Полностью изолирует транзакции, как если бы они выполнялись последовательно.
Пример в SQL:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
BEGIN TRANSACTION;
-- операции
COMMIT;