【问题标题】:Is there a SQL keyword meaning "Don't Change"?是否有一个 SQL 关键字表示“不要更改”?
【发布时间】:2018-04-20 19:49:19
【问题描述】:

目前,SQL 允许您在插入或更新记录时使用关键字DEFAULT,告诉数据库只使用列的默认数据类型值:

UPDATE TABLE SET COL_A = DEFAULT, COL_B = 'hello' WHERE ID = 123

例如,如果COL_A的数据类型是VARCHAR2,则语句会在COL_A中插入NULL。

但是,如果我想执行更新,但保持 COL_A 不变,该怎么办?我知道您可能会说,只需从更新语句中删除 COL_A 即可。但是,假设 COL_A 必须在语句中。是否有关键字让 SQL 知道保持 COL_A 的值不变?

例如,我想它可能是这样的:

UPDATE TABLE SET COL_A = NOCHANGE, COL_B = 'hello' WHERE ID = 123

但这显然不起作用。

【问题讨论】:

  • Col_A = Col_A这个别想太多!

标签: sql database oracle keyword default-value


【解决方案1】:

您可以只使用列名本身:

UPDATE TABLE
    SET COL_A = COL_A, COL_B = 'hello'
    WHERE ID = 123;

这适用于任何数据库。这通常用于“部分”更新:

UPDATE TABLE
    SET COL_A = (CASE WHEN foo = 'bar' THEN 'baz' ELSE COL_A END),
        COL_B = 'hello'
    WHERE ID = 123;

COL_B 始终更新。 COL_A 只是偶尔更新。

【讨论】:

  • 很棒的解决方案(CASE WHEN 正是我所需要的)
猜你喜欢
  • 2018-02-11
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-09
相关资源
最近更新 更多