sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL:některé problémy při vkládání z select with on konflikt

Myslím, že došlo k nedorozumění. Jedinečné omezení pro dva sloupce neznamená, že každý ze sloupců je jedinečný, ale že kombinace ze dvou sloupců je jedinečný.

Takže vaše must_be_different se liší (a slabší) než jedinečná omezení prompt_input_value a collect_project_id . Například, pokud máte tři řádky

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

vytvoří konflikt s oběma jedinečnými omezeními v jednom sloupci, ale ani s must_be_different .

Myslím, že základní problém je v tom, že chcete použít INSERT ... ON CONFLICT s mnoha jedinečnými omezeními. To nelze udělat; viz tuto otázku k diskusi a potenciálním řešením.




  1. SQLite JSON_PATCH()

  2. Vložení hodnoty NULL do sloupců NOT NULL s výchozí hodnotou

  3. Pořadí řazení řetězců (LC_COLLATE a LC_CTYPE)

  4. Vyžaduje se SQL dotaz s ON DUPLICATE KEY UPDATE