插入(如果不存在)并返回id

时间:2017-10-26 05:17:53

标签: postgresql postgresql-9.5

我有一个独特的专栏。我想插入一行(如果它还没有),然后返回该行的id

INSERT INTO t(a) VALUES ('a') ON CONFLICT DO NOTHING RETURNING t.id;

根本不返回任何内容。 enter image description here
我正在寻找每次如何获得1,无论是' a'是否新插入。

1 个答案:

答案 0 :(得分:2)

with i as (
    INSERT INTO t(a) VALUES ('a') ON CONFLICT (a) DO NOTHING RETURNING id
)
select id from i
union all
select id from t where a = 'a'
limit 1