【问题标题】:Database transaction integrity and atomicity数据库事务完整性和原子性
【发布时间】:2016-05-31 14:34:32
【问题描述】:

假设我在 RDBMS 数据库中创建了一个表,并在其中创建了一个整数字段。现在我有两个客户端同时更改同一记录的整数字段值,例如客户端 C1 将其设置为 1,同时客户端 C2 将同一记录 R1 设置为 2。

  1. 该字段设置为什么值? C1 和 C2 在事务中设置此值有何影响?
  2. 如果 C1 和 C2 都在事务中设置了值,那么它们的提交是否都成功?

(问题 1 和 2 的答案是否取决于 RDBMS,或者是否有关于系统行为方式的约定?)

【问题讨论】:

    标签: database concurrency transactions integrity


    【解决方案1】:

    事务的提交可以成功也可以失败。在两个并行事务写入同一字段的情况下,您的情况只有一个会成功。

    但是,根据 RDBMS,事务可能会说“增加 1”而不是“设置为 1”,在这种情况下不会发生冲突,两个事务都可以继续进行。

    【讨论】:

    • 只有一个成功依赖于每个RDBMS?还是所有 RDBMS 都随机失败?
    • 阅读正在考虑的 RDBMS 的文档。
    猜你喜欢
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 2019-09-16
    • 2020-02-21
    相关资源
    最近更新 更多