是否有 SQL 关键字表示 "Don't Change"?

Is there a SQL keyword meaning "Don't Change"?

目前,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

但这显然行不通。

您可以只使用列名本身:

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

这适用于任何数据库。这通常用于 "partial" 更新:

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 只是偶尔更新。