私はこのようなクエリを持っています(関数内):
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
、最初の3列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;
もっと良い方法はありますか?