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)
但这显然不起作用.
您只需使用列名称:
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有时只会更新.