J'ai une table avec un index unique sur deux champs, lane_id et position.PostgreSQL: mise à jour en masse avec index unique
Maintenant, je veux mettre à jour la ligne en utilisant cette requête:
UPDATE "teams_ticket" SET "position" = ("teams_ticket"."position" + 1) WHERE ("teams_ticket"."lane_id" = 1 AND "teams_ticket"."position" >= 0)
qui se termine avec:
duplicate key value violates unique constraint "teams_ticket_position_bfcce9fa_uniq"
Si j'ai plus d'un billet.
Comment puis-je résoudre ce problème?
Dépend de votre schéma. Il semble que vous ayez une contrainte de clé unique sur une valeur que vous incrémentez, ce qui serait un bon point de départ pour commencer à chercher des solutions. – Makoto
@Makoto Oui, je sais. J'ai et index (voir première ligne de billet). Le fait est que déplacer tous les tickets d'une position devrait aboutir à une situation valide (toutes les paires lane_id - position étant toujours uniques). Mais il semble qu'ils se sont déplacés un par un, puis l'index échoue. Je me demande quelle est la bonne façon de résoudre ce problème. – marxin
Vous devez 'reportable' ici. – wildplasser