【问题标题】:Make the following statement ACID compliant使以下声明符合 ACID
【发布时间】:2016-10-27 15:54:07
【问题描述】:

我想不通。如何使此更新声明符合 ACID?

Update Students Set Career = 'GRD' where Joined > '2012'

【问题讨论】:

  • 您的问题没有真正的意义 - 一般来说,ACIDity 是底层 DBMS 的属性。问一个 SQL 语句如何是 ACID 并没有什么意义 - 你能澄清你想要做什么/理解什么吗?
  • ACID 属性(原子性、一致性、隔离性、持久性)是 RDBMS 的属性,而不是 SQL 语句的属性。如果事务完成——无论是由于自动提交而隐式完成还是由于 COMMIT 语句而显式完成,DBMS 负责确保 ACID 属性。并且为了确保如果有回滚,DBMS 处于相同的状态,就好像什么都没发生过一样。并且它必须在存在并发事务的情况下确保这一点,以便其他事务不知道在这个事务中发生了什么。因此,您的问题似乎有点混乱。

标签: sql oracle acid


【解决方案1】:

如果执行以下命令,它只会更新实际需要将职业值更改为“GRD”的记录,如果值已经是“GRD”,则不会执行任何操作。此外,如果多次执行以下命令,它不会一次又一次地更新同一条记录:

Update Students Set Career = 'GRD' where Joined > 2012 and Career <> 'GRD'

【讨论】:

  • 虽然这是一个很好的建议,但它与“使其符合 ACID”无关
【解决方案2】:

它是连接的列。 试试这个查询

Update Students Set Career = 'GRD' 
where Cast(joined as date) > cast(01-Jan-2015 as date)

2012

【讨论】:

  • 欢迎来到 Stack Overflow。请尽快阅读About 页面。我不清楚这个答案是如何解决这个问题的——这似乎是在询问语句或 DBMS 的 ACID 属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 2015-05-25
  • 2013-07-11
  • 1970-01-01
相关资源
最近更新 更多