Agak bertele-tele, tapi saya tidak bisa memikirkan hal lain:
with all_tags (name) as (
values ('tag10'), ('tag6'), ('tag11')
), inserted (id, name) as (
INSERT INTO tags (name)
select name
from all_tags
ON CONFLICT DO NOTHING
returning id, name
)
select t.id, t.name, 'already there'
from tags t
join all_tags at on at.name = t.name
union all
select id, name, 'inserted'
from inserted;
Pilihan luar dari tags
melihat cuplikan tabel seperti sebelumnya tag baru dimasukkan. Kolom ketiga dengan konstanta hanya ada untuk menguji kueri sehingga seseorang dapat mengidentifikasi baris mana yang dimasukkan dan mana yang tidak.