我有這樣的查詢(在一個函數)不更新列:如果更新值爲null
UPDATE some_table SET
column_1 = param_1,
column_2 = param_2,
column_3 = param_3,
column_4 = param_4,
column_5 = param_5
WHERE id = some_id;
哪裏param_x
是我的函數的參數。有沒有辦法不更新這些列,參數爲NULL
?例如 - 如果param_4
和param_5
是NULL
,則只更新前三列併爲column_4
和column_5
保留舊值。
我現在做的方式是:
SELECT * INTO temp_row FROM some_table WHERE id = some_id;
UPDATE some_table SET
column_1 = COALESCE(param_1, temp_row.column_1),
column_2 = COALESCE(param_2, temp_row.column_2),
column_3 = COALESCE(param_3, temp_row.column_3),
column_4 = COALESCE(param_4, temp_row.column_4),
column_5 = COALESCE(param_5, temp_row.column_5)
WHERE id = some_id;
有沒有更好的辦法?
我認爲這是一段路要走。 –