2017-10-26 16 views
0

고유 한 열이 있습니다. 이미 행이 없으면 행을 삽입하고 해당 행의 id을 리턴합니다.삽입 (없는 경우) 및 반송 ID

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

은 아무 것도 반환하지 않습니다. Here's a fiddle.
'a'가 새로 삽입되었는지 여부에 관계없이 매번 1 번씩 얻는 방법을 찾고 있습니다.

+1

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

+0

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

답변

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