sql >> Base de Datos >  >> RDS >> PostgreSQL

Error de sintaxis en código de prueba UPSERT

Como este es el resultado principal de Google por error:

ON CONFLICT DO UPDATE command cannot affect row a second time

Agregaré que puede ser causado por un VALUES de conflicto duplicado , por ejemplo

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

En este caso tratamos de insertar dos valores con dim establecido en 5 . Como dim es el índice que no puede tener conflicto en la consulta misma.

Encontré este error al implementar microservicios y procesar solicitudes, algunas de las cuales tenían registros duplicados.