sql >> Database >  >> RDS >> PostgreSQL

Unieke beperking van Postgres die uniciteit niet afdwingt

Unieke indexen in Postgres zijn gebaseerd op waarden die gelijk zijn , maar NULL is nooit gelijk aan iets, inclusief andere NULL's. Daarom is elke rij met een waarde NULL delete_at verschillend van elke andere mogelijke rij - dus u kunt er een willekeurig aantal invoegen.

Een manier om dit te omzeilen is het maken van gedeeltelijke indexen , verschillende regels toepassen op rijen met en zonder NULL's:

 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. Hoe MariaDB op CentOS 7 te installeren en te beveiligen

  2. Afspraken opslaan in een SQL-database zoals Postgres voor gebruik met java.time framework

  3. MySQL-tabel met AUTO_INCREMENT primaire id geeft het nummer niet vrij na een rollback

  4. MYSQL Selecteer binnen dezelfde tabel