Как работает фиксация транзакции? - PullRequest
0 голосов
/ 13 октября 2018

В моих терминах «транзакция» обрабатывает операции как атомарные, скажем, если один сбой означает, что все потерпит неудачу.Но что произойдет, если транзакция по какой-либо причине потерпит неудачу?

Учтите это:

  1. action.open
  2. insert1
  3. insert2
  4. транзакция.commit

Как это работает?

A.2,3 будет выполнен, и в случае сбоя одного из них все изменения будут отменены из БД из-за отсутствия 4?В этом случае, если выполнения 2,3 были в порядке, но 4 завершились неудачно, тогда вся операция, которая должна была завершиться успешно, фактически потерпит неудачу?

или

B.2,3 не будет выполняться на уровне дБи если все в порядке, то 4. будет выполнять фактические команды в БД?В этом случае, если 4 не работает на полпути своей операции, по какой-то причине это означает, что произойдут частичные -non-atomic- вставки?

или

C. Ответ - что-то другое?

спасибо!

1 Ответ

0 голосов
/ 13 октября 2018

Изменения будут внесены в БД только в том случае, если все шаги выполнены успешно, а принятие транзакции также выполнено успешно (в вашем примере, шаг 4)Это все или ничего.

Обратите внимание на ACID свойства транзакции.

...