Обновление строк, выбранных курсором в SQL - PullRequest
2 голосов
/ 19 июня 2009

В оракуле, если я определю курсор и в то же время, если в Таблице будет обновление, что произойдет с моим Курсором? Это становится недействительным или Обновления не имеет значения?

1 Ответ

4 голосов
/ 19 июня 2009

Каждый запрос в Oracle соответствует определенному моменту времени (обычно это начало запроса).

В вашем случае, если вы открываете курсор и во время его извлечения кто-то изменяет строки, Oracle восстановит логическую копию данных, как это было при открытии курсора. Вы не увидите изменений в данных, сделанных после этого момента.

Эта последовательность чтения является фундаментальной частью механизма Oracle.

Из Концептуального руководства , последовательность чтения:

  • Гарантирует, что набор данных, видимый оператором, согласован относительно одного момента времени и не изменяется во время выполнения оператора (согласованность чтения на уровне оператора)
  • Гарантирует, что читатели данных базы данных не ждут писателей или других читателей тех же данных
  • Гарантирует, что создатели данных базы данных не ждут читателей с теми же данными
  • Гарантирует, что писатели ждут других писателей, только если они пытаются обновить идентичные строки в параллельных транзакциях
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...