Почему опция автоматической транзакции в CakePHP называется "атомарной"?


Я не понимаю значения слова "атомарный". Например:

$conn = $this->ArticlesTable->connection();
$articles->save($entity, ['atomic' => false]); // <-- here
$conn->commit();

Не должно ли вместо этого быть "автоматическая фиксация"?

Author: Dave, 2017-01-27

1 answers

На самом деле вы включаете/выключаете "атомарные" транзакции, а не "автоматические" транзакции.

"Атомарный" - правильный термин:

Атомарная транзакция - это неделимая и несводимая серия операций с базой данных, в которой либо все происходит, либо ничего не происходит. Гарантия атомарности предотвращает частичное обновление базы данных, что может вызвать большие проблемы, чем полное отклонение всей серии.

- Википедия: Атомарность

Ключ есть"...такой, что либо ВСЕ происходит, либо НИЧЕГО НЕ происходит"

.

Когда значение atomic равно false (выключено), и вы запускаете сохранение, для которого требуется более одного запроса, он будет выполняться каждый по отдельности и может быть успешным для некоторых, но не для других.

Когда atomic true (включен), и вы запускаете сохранение, для которого требуется более одного запроса, он обработает их как одну транзакцию и либо завершит все успешно, либо полностью завершит все. Нет частичные сохранения/обновления.

 6
Author: Dave, 2017-01-28 18:49:54