【发布时间】:2017-10-26 05:17:53
【问题描述】:
我有一个独特的专栏。如果它不存在,我想插入一行,然后返回该行的id。
INSERT INTO t(a) VALUES ('a') ON CONFLICT DO NOTHING RETURNING t.id;
什么都不返回。 Here's a fiddle.
我正在寻找如何每次都获得 1,无论“a”是否是新插入的。
【问题讨论】:
我有一个独特的专栏。如果它不存在,我想插入一行,然后返回该行的id。
INSERT INTO t(a) VALUES ('a') ON CONFLICT DO NOTHING RETURNING t.id;
什么都不返回。 Here's a fiddle.
我正在寻找如何每次都获得 1,无论“a”是否是新插入的。
【问题讨论】:
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
【讨论】: