Postgresql
在 Postgres UPSERT 中有條件地設置值
我們有一個通過UPSERT實現的功能
on conflict do set
。如何在 set 語句中有條件地設置值,例如if(excluded.col1 is null) col1=table.col1 else col1=excluded.col1
我們正在使用 Postgres 9.5。
... SET col1 = COALESCE(excluded.col1, table.col1) ...
當然,兩個表都必須是可見的。
如果您正在更新子句
table1
會更有效WHERE
... SET col1 = excluded.col1 WHERE excluded.col1 IS NOT NULL AND excluded.col1 IS DISTINCT FROM table1.col1 -- to avoid empty updates ...
關於添加的第二個條件: