Непротиворечивость чтения
Oracle гарантирует, что набор данных, видимых оператором, соответствует одному моменту времени и не изменяется во время выполнения оператора (операторасогласованность на уровне чтения)
Вот почему, если у вас есть запрос, такой как
insert into t
select * from t;
Oracle просто продублирует все строки, не заходя в бесконечный цикл или не вызывая ошибку.
Из-за этого есть и другие последствия.
1) Oracle считывает данные из сегмента отката, чтобы предоставить вам непротиворечивое изображение ваших данных.Таким образом, если ваши сегменты отката имеют неправильный размер или вы фиксируете между выборками, вы получите ошибку «Снимок слишком старый», поскольку ваши данные отката больше не доступны.
Хорошо, такесли это так, можно ли обновить его при обновлении?Я имею в виду не только обновление курсора, но и использование встроенных функций набора результатов.
2) Каждый запрос видит данные в момент времени, когда начался .Если под обновлением вы подразумеваете повторное выполнение запроса, то данные, которые вы видите, могут снова отличаться, если вы делаете коммиты в теле pl / sql или в цикле pl / sql, или если в вашей системе одновременно выполняются другие транзакции.