sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:enkele problemen bij het invoegen van selecteren met bij conflict

Ik denk dat er een misverstand is. Een unieke beperking over twee kolommen betekent niet dat elk van de kolommen uniek is, maar dat de combinatie van de twee kolommen is uniek.

Dus je must_be_different is anders (en zwakker) dan de unieke beperkingen op prompt_input_value en collect_project_id . Als u bijvoorbeeld de drie rijen

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

ze zullen een conflict creëren met zowel unieke beperkingen met één kolom, maar ook niet met must_be_different .

Ik denk dat het onderliggende probleem is dat je INSERT ... ON CONFLICT . wilt gebruiken met meerdere unieke beperkingen. Dat kan niet; zie deze vraag voor een discussie en mogelijke oplossingen.




  1. MySQL UUID primaire sleutel - gegenereerd door PHP of door MySQL?

  2. Hoe kolommen invoegen op een specifieke positie in een bestaande tabel?

  3. Zoek het oudste record in een join tussen twee tabellen

  4. MYSQL:Hoe kan ik de 'datum van afgelopen maandag' vinden (prestatieprobleem)