следующие строки из документации, как по мне, противоречат друг другу.
` Repeatable Read Isolation Level
The Repeatable Read isolation level ... never sees either uncommitted data or changes committed during transaction execution by concurrent transactions
UPDATE, DELETE ... commands behave the same as SELECT in terms of searching for target rows: they will only find target rows that were committed as of the transaction start time. However, such a target row might have already been updated (or deleted or locked) by another concurrent transaction by the time it is found.
`
Вот не понятно, вроде как при этом уровне изоляции внутри транзакции не видны изменения произведенные другими транзакциями, и в тоже время в следующем абзаце написано, что UPDATE, DELETE ... квери могут получить модифицированные данные.
Помогите плз, как это понимать? Спасибо.
> и в тоже время в следующем абзаце написано, что UPDATE, DELETE ... квери могут получить модифицированные данные. Нет, не написано же. Написано только то, что при выборке запрос на них "наткнётся". Что будет потом, написано дальше, насколько я помню.
я и не говорю что будет в результате работы транзакции, я говорю что транзакция получит модифицированные данные (после селекта выбранные данные окажутся модифицированными). Вот и вопрос, почему так? Ведь написано, что на этом уровне изоляции транзакция не должна видеть изменения произведенные другими транзакиями.
Нет, не получит (опять-таки, там этого не написано). И Вы бы знали это, если бы попробовали тривиальные тесты, кстати. ;) Т.е. если хотите подробно разбираться — лучше создать тестовые таблицы, открыть две сессии и пробовать всё, что смущает.
Спасибо, обязательно сделаю это, но все же, если вы говорите что не получит, то как понимать это абзац? UPDATE, DELETE ... commands behave the same as SELECT in terms of searching for target rows: they will only find target rows that were committed as of the transaction start time. However, such a target row might have already been updated (or deleted or locked) by another concurrent transaction by the time it is found.
Тем не менее, такая запись может быть уже модифицирована (или удалена, или заблокирована) другой конкурентной (параллельно выполняющейся) транзакцией к тому моменту, когда [эта запись] будет найдена.
ну да) что я сказал не так?)
То, что нигде тут не написано, что данная транзакция её увидит. Описывается неизбежная реальность — транзакции происходят, [такие] изменения случаются. Почему Вы не читаете текст дальше, а "застряли" на этом предложении?
все, врубился, спасибо. Действительно чето меня залогало=)
Обсуждают сегодня