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

Jedinečné omezení Postgresu nevynucující jedinečnost

Jedinečné indexy v Postgresu jsou založeny na rovných hodnotách , ale NULL se nikdy nerovná ničemu, včetně jiných hodnot NULL. Každý řádek s hodnotou NULL delete_at je tedy odlišný od jakéhokoli jiného možného řádku – takže jich můžete vložit libovolný počet.

Jedním ze způsobů, jak to obejít, je vytvořit částečné indexy , použití různých pravidel na řádky s hodnotami NULL a bez nich:

 CREATE UNIQUE INDEX ... ON subscriptions
 (user_id, class_type_id) WHERE deleted_at IS NULL;

 CREATE UNIQUE INDEX ... ON subscriptions
 (user_id, class_type_id, deleted_at) WHERE deleted_at IS NOT NULL;


  1. MySQL LIKE s rozsahem nefunguje

  2. Docker Compose, Django:role _ neexistuje

  3. Import databáze do MySQL nebo MariaDB

  4. Získejte řádek s nejvyšší nebo nejnižší hodnotou ze skupiny GROUP BY