PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:alcuni problemi da inserire da select con conflitto

Penso che ci sia un malinteso. Un vincolo univoco su due colonne non significa che ciascuna colonna sia unica, ma che la combinazione delle due colonne è unico.

Quindi il tuo must_be_different è diverso (e più debole) rispetto ai vincoli univoci su prompt_input_value e collect_project_id . Ad esempio, se hai le tre righe

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

creeranno un conflitto con entrambi i vincoli univoci a colonna singola, ma nemmeno con must_be_different .

Immagino che il problema di fondo sia che vuoi usare INSERT ... ON CONFLICT con molteplici vincoli univoci. Ciò non può essere fatto; vedi questa domanda per una discussione e potenziali soluzioni.