PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PostgreSQL :quelques problèmes pour insérer à partir de la sélection avec un conflit

Je pense qu'il y a un malentendu. Une contrainte d'unicité sur deux colonnes ne signifie pas que chacune des colonnes est unique, mais que la combinaison des deux colonnes est unique.

Donc, votre must_be_different est différent (et plus faible) que les contraintes uniques sur prompt_input_value et collect_project_id . Par exemple, si vous avez les trois lignes

 collect_project_id | prompt_input_value
--------------------+--------------------
                  1 | a
                  1 | b
                  2 | b

ils créeront un conflit avec les deux contraintes uniques à une seule colonne, mais ni avec must_be_different .

Je suppose que le problème sous-jacent est que vous souhaitez utiliser INSERT ... ON CONFLICT avec plusieurs contraintes uniques. Cela ne peut pas être fait; voir cette question pour une discussion et des solutions potentielles.