事务的提交如何工作?

时间:2018-10-13 10:26:35

标签: transactions rdbms

就我而言,“交易”将操作视为原子操作,例如,如果一次失败意味着全部都会失败。但是当事务的提交由于某种原因而失败时会发生什么?

考虑一下:

  1. transaction.open
  2. 插入1
  3. 插入2
  4. transaction.commit

这是如何工作的?

将执行A.2,3,如果其中一个失败,则由于缺少4,所有更改将从DB恢复。在这种情况下,如果可以执行2,3但执行4失败,那么应该成功的整个操作实际上会失败吗?

B.2,3不会在数据库级别执行,如果一切正常,那么4.将在数据库中执行实际命令吗? 在这种情况下,如果4由于某种原因在运行中途失败,意味着将发生部分非原子插入?

C。答案是不同的吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

仅当所有步骤都成功并且事务提交也成功完成(在您的示例中,步骤4)时,才会在DB中进行更改。全部或全无。

看看ACID交易属性。