PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Уникалното ограничение на Postgres не налага уникалност

Уникалните индекси в Postgres се базират на равни стойности , но NULL никога не е равно на нищо, включително други NULL. Следователно всеки ред с NULL deleted_at стойност е различен от всеки друг възможен ред - така че можете да вмъкнете произволен брой от тях.

Един от начините за това е да създадете частични индекси , прилагайки различни правила към редове със и без NULL:

 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да зададете UTF-8 в PDO конструктор на клас за PHP PgSQL база данни

  2. рекурсивно изравняване на вложен jsonb в postgres без неизвестна дълбочина и неизвестни ключови полета

  3. Postgresql :Обединете 2 подобни бази данни

  4. Postgres:ИЗБЕРЕТЕ име на колона въз основа на булева стойност

  5. Разбиране на растерни индекси в postgresql