sql >> Databasteknik >  >> RDS >> PostgreSQL

Använd INSERT ... PÅ KONFLIKT GÖR INGENTING ÅTERGÅR misslyckade rader

Lite detaljerat, men jag kan inte komma på något annat:

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;

Den yttre väljer från tags ser ögonblicksbilden av tabellen som den var förut de nya taggarna infogades. Den tredje kolumnen med konstanten är endast till för att testa frågan så att man kan identifiera vilka rader som infogades och vilka inte.



  1. Kommandot python setup.py egg_info misslyckades med felkod 1 i /tmp/pip-install-fs0wmmw4/mysqlclient/

  2. executemany för MySQLdb-fel för stort antal rader

  3. Se till att intervallvärdet inte överlappar befintliga intervall

  4. Hur man utför grupperad rankning i MySQL