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

Syntaksfejl i UPSERT-testkode

Da dette er det øverste Google-resultat for fejl:

ON CONFLICT DO UPDATE command cannot affect row a second time

Jeg vil tilføje, at det kan være forårsaget af en dublet konflikt VALUES , f.eks.

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

I dette tilfælde forsøger vi at indsætte to værdier med dim indstillet til 5 . Som dim er det indeks, det ikke kan have konflikt i selve forespørgslen.

Jeg stødte på denne fejl, da jeg implementerede mikroservice- og behandlingsanmodninger, nogle af dem havde duplikerede poster.



  1. pyodbc - meget langsom bulk indsættelseshastighed

  2. Hvor mange borde kan jeg tilslutte mig sammen med MySQL?

  3. MySQL:Gruppér efter to kolonner og sum

  4. Hvorfor fungerer SQL Server 2008 Management Studio Intellisense ikke?