Da dies das oberste Google-Ergebnis für Fehler ist:
ON CONFLICT DO UPDATE command cannot affect row a second time
Ich werde hinzufügen, dass dies durch doppelte Konfliktwerte verursacht werden kann , z. B.
INSERT INTO distributors (did, dname)
VALUES
(5, 'Gizmo Transglobal'),
(5, 'Associated Computing, Inc')
ON CONFLICT (did) DO UPDATE SET dname = EXCLUDED.dname;
In diesem Fall versuchen wir mit dim
zwei Werte einzufügen auf 5
setzen . Als dim
ist der Index, der in der Abfrage selbst keinen Konflikt haben kann.
Ich bin auf diesen Fehler gestoßen, als ich Mikrodienste implementierte und Anfragen verarbeitete, von denen einige doppelte Datensätze hatten.