Одновременное чтение в оракуле? - PullRequest
1 голос
/ 01 июля 2011

Скажем, у нас есть таблица клиентов, в которой есть запись

CustId    LastName
1          Hamlin

В одном запросе мы получаем фамилию клиента как Hamlin для custId = 1. Мы обновляем фамилию до Кэти, но не фиксируем ее.

Приходит еще один запрос, он также пытается получить фамилию для custId = 1. Это получит Кэти или Хэмлин.

Насколько я понимаю, если оба запроса получают разные объекты соединения (что и должно быть), второй запрос получит доступ к Hamlin. Но если они получат один и тот же объект соединения, то второй объект запроса увидит фамилию как Кэти. P

аренда, дайте мне знать, если вышеприведенное понимание верно?

Ответы [ 2 ]

3 голосов
/ 01 июля 2011

Поскольку вы находитесь на уровне изоляции фиксации транзакции (или выше, Oracle поддерживает не ниже), вы никогда не увидите изменений, внесенных незафиксированными другими транзакциями.Помните, что особенно в сериализуемом режиме вашему запросу может потребоваться дождаться подтверждения или отката другой транзакции, или же ваша транзакция может откатиться за вас.

Oracle поддерживает только фиксацию чтения и сериализацию (вы можете выбратьнапример, через SET TRANSACTION ISOLATION LEVEL);другие системы баз данных дополнительно поддерживают функцию read-uncommitted, что позволит вам увидеть обновленное, но еще не зафиксированное значение.

1 голос
/ 01 июля 2011

если вы находитесь в той же транзакции, вы увидите свои незафиксированные значения (но не другие люди / транзакции).

при любом другом доступе будет отображаться последнее согласованное с прочтением представление о коммитах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...