2017-10-26 1 views
0

Ich habe eine eindeutige Spalte. Ich möchte eine Zeile einfügen, wenn sie nicht bereits vorhanden ist, und dann die id dieser Zeile zurückgeben.Einfügen (wenn nicht vorhanden) und return id

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

gibt überhaupt nichts zurück. Here's a fiddle.
Ich suche, wie man jedes Mal 1 erhält, ob 'a' neu eingefügt wurde oder nicht.

+1

https://stackoverflow.com/q/39779145/330315 –

+0

https://stackoverflow.com/q/24050779/330315 –

Antwort

0
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 
Verwandte Themen