我正在考虑使用PostgreSQLINSERT .. ON CONFLICT UPDATE功能。理想情况下,我能够区分哪些行被成功插入,哪些行被更新。有办法吗?

最佳答案

你需要一个额外的辅助列(在例子中updated)。

create table test (id int primary key, str text, updated boolean);
insert into test values (1, 'old', false);

insert into test values
    (1, 'new 1', false),
    (2, 'new 2', false)
on conflict (id) do
update set
    str = excluded.str, updated = true
returning *;

 id |  str  | updated
----+-------+---------
  1 | new 1 | t
  2 | new 2 | f
(2 rows)

关于sql - Postgres upsert:区分新行和更新行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38613887/

10-11 20:48