Доступны ли изменения данных в ходе выполнения транзакции в Oracle?

СУБД Oracle.
В ходе выполнения транзакции происходит вставка (INSERT) или обновление (UPDATE) данных в одной таблице. В той же транзакции вызывается хранимая процедура, использующая для получения результата эту же таблицу.

Правильно ли я понимаю, что в используемом по умолчанию Oracle уровне изоляции READ COMMITED изменения, сделанные в ходе транзакции, не видны при чтении в рамках этой же транзакции? То есть моя хранимая процедура не видит данных вставленных или обновленных ранее в ходе транзакции?

Какой уровень изоляции нужно выставить, чтобы чтение увидело изменения, сделанные в ходе транзакции?
  • Вопрос задан
  • 3141 просмотр
Решения вопроса 1
@fessvmk
Неправильно понимаете. В рамках одной сессии вы видите все незакомиченные изменения сделанные в этой сессии. Если ваша хранимая процедура не автономная, то все она увидит. Да и проверить это легко. Что вам мешает создать таблицу, вставить туда строку, а потом вызвать хранимую процедуру, которая что-то попытается сделать с этой строкой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Geny
В рамках этой-же транзакции изменения будут видны, но они не будут видны для других транзакций до COMMIT.

create table ttt (code varchar2(10));
insert into ttt values ('10');
select * from ttt;
-->>10
update ttt set code = '20';
select * from ttt;
-->>>20
drop table ttt;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы