是否有一个SQL关键字意思是"不要改变"?

use*_*495 1 sql database oracle default-value keyword

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

UPDATE TABLE SET COL_A = DEFAULT, COL_B = 'hello' WHERE ID = 123
Run Code Online (Sandbox Code Playgroud)

例如,如果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
Run Code Online (Sandbox Code Playgroud)

但这显然不起作用.

Gor*_*off 5

您只需使用列名称:

UPDATE TABLE
    SET COL_A = COL_A, COL_B = 'hello'
    WHERE ID = 123;
Run Code Online (Sandbox Code Playgroud)

这适用于任何数据库.这通常用于"部分"更新:

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

COL_B总是更新. COL_A有时只会更新.