|
我有这样的查询(在函数中):+ e& V8 q9 f5 h* _ o7 H
UPDATE some_table SET column_1 = param_1, column_2 = param_2, column_3 = param_3, column_4 = param_4, column_5 = param_5WHERE id = some_id;param_x我的函数参数在哪里?有没有办法不更新这些参数的列?NULL?例如-
1 A; j, g/ J( R6 V! L如果param_4和param_5是NULL,然后只更新前三列,离开旧值column_4和column_5。# e( I8 u0 [1 z$ E
我现在做的是:
, c7 X6 Y& P( H9 bSELECT * 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;有没有更好的办法?
- [2 @5 A" P+ b4 r9 w9 O, E
5 `; e# ]* z5 E6 z6 ~ 解决方案:
2 U' y; p5 J" F5 {, p( W* R 删除SELECT句子,不需要使用,只需要使用当前值: l# d2 S: D- g& ?1 ^6 l
UPDATE some_table SET column_1 = COALESCE(param_1,column_1), column_2 = COALESCE(param_2,column_2), column_3 = COALESCE(param_3,column_3), column_4 = COALESCE(param_4,column_4), column_5 = COALESCE(param_5,column_5)WHERE id = some_id; |
|