为什么CakePHP中的自动事务选项被调用" atomic"?

时间:2017-01-27 15:03:30

标签: cakephp transactions cakephp-3.0 atomic

我不理解" atomic"这个词的含义。例如:

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

不应该是&#34; autocommit&#34;代替?

1 个答案:

答案 0 :(得分:6)

你实际上是打开/关闭“原子”交易,而不是“自动”交易。

“Atomic”是正确的术语:

  

原子交易是一个不可分割和不可简化的系列   数据库操作,要么全部发生,要么什么都不发生。一个   原子性保证仅阻止对数据库的更新   部分地,这可能导致比拒绝整体更大的问题   系列直接。

- Wikipedia: Atomicity

关键是“......所有ALL都会发生,或者发生任何事情。”

当原子为false(关闭),并且您运行需要多个查询的保存时,它将单独运行每个查询,并且可以在某些查询上成功,但不能在其他查询上成功。

当atomic是true(on),并且您运行需要多个查询的保存时,它会将它们作为单个事务处理,并且要么全部成功完成,要么失败一切都完全。没有部分保存/更新。