Памятка про рестарты в select for update OF


Чтобы в следующий раз опять долго не искать, продублирую и здесь полезное обсуждение:
andrey_anonymous:
При выполнении select for update OF критерием инициирования Statement rollback будет изменение значения любого поля, упомянутого в:
  • select list
  • where clause
  • update OF [column_list]
Т.е. update OF можно либо осознанно применять для провоцирования statement rollback в своих корыстных интересах либо неосознанно применить в соответствии с докой, случайно спровоцировав лишний рестарт.
А рестарт - это довольно затратная затея, особенно на крупных/сложных выборках.
for update of: получается так что, если изменилось поле, не попадающее в 3 перечисленные условия, то рестарта не будет а выборка будет считаться согласованной, несмотря на значение scn?
andrey_anonymous: Именно так, см. "эскперимент1". Скажу больше - если новое значение поля будет совпадать со старым, то рестарта тоже не будет, даже если измененное поле упомянуто в запросе.

Comments

Отправка комментария