J'utilise cette table dans une base de données PostgreSQL :
create table if not exists "Service" (
_id uuid not null primary key,
service text not null,
"count" integer not null,
"date" timestamp with time zone,
team uuid,
organisation uuid,
"createdAt" timestamp with time zone not null,
"updatedAt" timestamp with time zone not null,
unique (service, "date", organisation),
foreign key ("team") references "Team"("_id"),
foreign key ("organisation") references "Organisation"("_id")
);
Lorsque j'essaie un upsert
avec Sequelize
avec le code suivant, une erreur est renvoyée :
Service.upsert({ team, date, service, organisation, count }, { returning: true })
L'erreur est :
error: duplicate key value violates unique constraint "Service_service_date_organisation_key"
Key (service, date, organisation)= (xxx, 2022-12-30 01:00:00+01, 12345678-5f63-1bc6-3924-517713f97cc3) already exists.
Mais selon la documentation de Sequelize, cela devrait fonctionner : https://sequelize.org/docs/v6/other-topics/upgrade/#modelupsert
Note pour les utilisateurs de Postgres : Si la charge utile upsert contient le champ PK, alors PK sera utilisé comme cible de conflit. Sinon, la première contrainte unique sera sélectionnée comme clé de conflit.
Comment puis-je trouver cette erreur de clé dupliquée et la faire fonctionner avec la clé unique composite : unique (service, "date", organisation)
?