Don't update column if update value is null

前端 未结 3 1771
没有蜡笔的小新
没有蜡笔的小新 2021-02-02 06:18

I have a query like this (in a function):

UPDATE some_table SET
  column_1 = param_1,
  column_2 = param_2,
  column_3 = param_3,
  column_4 = param_4,
  column_         


        
3条回答
  •  伪装坚强ぢ
    2021-02-02 06:34

    Neat trick, thanks Przemek, Frank & Erwin!

    I suggest a minor edit to Erwin's answer to avoid empty updates. If any parameters were null (meaning: "use the old value"), the row was updated each time even though the row values did not change (after the first update).

    By adding "param_x IS NOT NULL", we avoid empty updates:

    UPDATE some_table SET
        column_1 = COALESCE(param_1, column_1),
        column_2 = COALESCE(param_2, column_2),
        ...
    WHERE id = some_id
    AND  (param_1 IS NOT NULL AND param_1 IS DISTINCT FROM column_1 OR
          param_2 IS NOT NULL AND param_2 IS DISTINCT FROM column_2 OR
         ...
     );
    

提交回复
热议问题