Я использую MySQL: 5.7.24.
Мой уровень изоляции установлен на «REPEATABLE-READ», и я пытаюсь выполнить 2 транзакции (T1, T2), где команды выполняются в следующем порядке:
1) T1: begin transaction
2) T2: begin transaction
3) T1: read a row R1
4) T2: update row R1 which is successful
5) T1: read the same row R1 (and gets old value)
6) T2: commit
7) T1: commit
Я ожидал, что шаг (4) должен быть заблокирован, так как он уже прочитан T1, чего не происходит. Может кто-нибудь объяснить, пожалуйста, где я не прав?
Также у меня есть следующий порядок транзакций:
1) T1 Begin Transaction
2) T2 Begin Transaction
3) T1 reads R1
4) T2 reads R1
5) T1 updates R1
6) T2 updates R2
7) T1 commit
8) T2 commit
Я хочу, чтобы транзакция от T2 / T1 до rollback
(кто обновится позже), поскольку она обновляет R1, который уже изменен (или в момент, когда он был прочитан, он уже обновлен какой-либо другой транзакцией), что мне делать?