PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Errore di sintassi nel codice di test UPSERT

Poiché questo è il primo risultato di Google per errore:

ON CONFLICT DO UPDATE command cannot affect row a second time

Aggiungo che potrebbe essere causato da un conflitto duplicato VALUES , ad es.

INSERT INTO distributors (did, dname)
VALUES 
    (5, 'Gizmo Transglobal'), 
    (5, 'Associated Computing, Inc')
ON CONFLICT (did) DO UPDATE SET dname = EXCLUDED.dname;

In questo caso proviamo ad inserire due valori con dim impostato su 5 . Come dim è l'indice che non può avere conflitti nella query stessa.

Ho riscontrato questo errore durante l'implementazione del microservizio e l'elaborazione delle richieste, alcune delle quali con record duplicati.