2017-10-15 164 views
-1

我有以下查询,现在一个成功插入Postgresql upsert在冲突时返回ID?

INSERT INTO match (match_id) values(?) ON CONFLICT DO NOTHING RETURNING id 

我怎样才能让这个返回已经存在冲突行的id后返回的ID?

回答

1

使用ON CONFLICT DO UPDATE而不是确保查询某行工作,因此可以返回的东西:

CREATE TABLE match(id serial PRIMARY KEY); 

INSERT INTO match (id) VALUES (1) 
ON CONFLICT (id) DO UPDATE 
    SET id = excluded.id 
RETURNING id; 
+0

我得到以下错误“org.postgresql.util.PSQLException:错误:冲突DO更新需要推理规范或约束名称 提示:例如,ON CONFLICT(column_name)。 Position:41“ – Arya

+0

另外我想提一下,它是'match_id',我正在设置,并且我想'id'返回 – Arya

+0

我的不好,你必须指定什么是冲突 - 我已编辑。尽管除非'id'基于'match_id',我可以指定你要更新和返回的内容,但我不知道如何在没有在插入中明确指定冲突的情况下触发冲突。 – dmfay