sql >> Databáze >  >> RDS >> PostgreSQL

Chyba syntaxe v testovacím kódu UPSERT

Protože toto je nejvyšší výsledek Google pro chybu:

ON CONFLICT DO UPDATE command cannot affect row a second time

Dodám, že to může být způsobeno duplicitním konfliktem VALUES , např.

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

V tomto případě se pokusíme vložit dvě hodnoty pomocí dim nastavte na 5 . Jako dim je index, který nemůže mít konflikt v samotném dotazu.

Na tuto chybu jsem narazil při implementaci mikroslužeb a zpracování požadavků, některé z nich měly duplicitní záznamy.



  1. Jak nainstalovat Oracle Instant Client na Mac?

  2. Jak formátovat výsledky SQLite jako tabulku

  3. mysql vybrat int jako měnu nebo převést int do formátu měny?

  4. Pole datatimestamp automatické aktualizace serveru SQL Server