Tôi có một câu hỏi như thế này (trong một hàm):Không cập nhật cột nếu cập nhật giá trị là 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;
đâu param_x
là một tham số chức năng của tôi. Có cách nào để KHÔNG cập nhật các cột đó, với tham số là NULL
? Ví dụ: nếu param_4
và param_5
là NULL
, thì chỉ cập nhật ba cột đầu tiên và để nguyên giá trị cũ cho column_4
và column_5
.
Con đường tôi đang làm nó bây giờ là:
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;
Có cách nào tốt hơn?
Tôi nghĩ đó là con đường để đi. –