PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL:einige Probleme beim Einfügen von select with on conflict

Ich glaube da liegt ein Missverständnis vor. Eine Eindeutigkeitsbeschränkung über zwei Spalten bedeutet nicht, dass jede der Spalten eindeutig ist, sondern dass die Kombination der beiden Spalten ist eindeutig.

Ihr must_be_different sein ist anders (und schwächer) als die eindeutigen Beschränkungen für prompt_input_value und collect_project_id . Zum Beispiel, wenn Sie die drei Zeilen

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

Sie erzeugen einen Konflikt mit beiden einspaltigen eindeutigen Einschränkungen, aber auch nicht mit must_be_different .

Ich denke, das zugrunde liegende Problem ist, dass Sie INSERT ... ON CONFLICT verwenden möchten mit mehreren eindeutigen Einschränkungen. Das geht nicht; siehe diese Frage für eine Diskussion und mögliche Lösungen.