Обновите вновь созданную строку перед окончательной фиксацией - PullRequest
1 голос
/ 14 сентября 2009
insert into XYZ(col1, col2) values (1,2)
    update XYZ set ... where col1 = 1
    COMMIT

Как видно из приведенного выше кода, мы еще не зафиксировали наш оператор вставки, и мы выполнили операцию обновления в той же строке, и, наконец, мы зафиксировали весь пакет.

Что именно произойдет в этом случае? Есть ли шансы потерять данные в этом сценарии?

Ответы [ 5 ]

5 голосов
/ 14 сентября 2009

ваша сессия всегда может видеть свои собственные модификации, даже до того, как вы выполните коммит .

1 голос
/ 14 сентября 2009

добавленная строка будет обновлена.

Единственный способ, которым вы можете "потерять данные", - это прерывание перед фиксацией, в этом случае никакие операции вообще не будут выполняться

0 голосов
/ 17 сентября 2009

Infact Все транзакции хранятся в сегменте отката с использованием памяти табличного пространства этого конкретного экземпляра. Сегмент отката - это пространство хранения в табличном пространстве, в котором хранится информация о транзакции, используемая для гарантии целостности данных во время ROLLBACK и используемая для чтения. согласованность между несколькими транзакциями.

0 голосов
/ 14 сентября 2009

Для дальнейшего чтения здесь есть ссылка на раздел «Параллелизм и непротиворечивость данных» превосходного Руководства по концепциям Oracle 10gR2

http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/consist.htm

0 голосов
/ 14 сентября 2009

Важные слова в ответе Винсента - «ваша сессия».

Отдельный сеанс будет видеть только неизмененные данные, пока вы не подтвердите. Это часть средств обеспечения согласованности чтения.

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

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