Сохранение столбца таблицы пустым, если он проиндексирован как уникальный - PullRequest
0 голосов
/ 17 декабря 2010

Можно ли сохранить столбец таблицы пустым, если он определен как уникальный?

Схема таблицы

      Column       |          Type          |   Modifiers   | Description 
-------------------+------------------------+---------------+-------------
 id                | integer                | not null      | 
 name              | character varying(64)  |               | 

Индексы

Indexes:
    "clients_pkey" PRIMARY KEY, btree (id)
    "clients_name_idx" UNIQUE, btree (name)
Has OIDs: yes

Из-за изменений в приложении иногда столбец имени должен быть пустым, возможно ли это вообще?

Ответы [ 2 ]

2 голосов
/ 17 декабря 2010

Если столбец может содержать значения NULL, то это нормально, поскольку NULL не включен в индекс.

Обратите внимание, что некоторые базы данных не реализуют стандарт должным образом (некоторые версииSQL Server допускает только одно значение NULL на одно уникальное ограничение, но я уверен, что это так и есть).

0 голосов
/ 17 декабря 2010

Использование NULL - лучший вариант, но вы также можете использовать условный уникальный индекс:

CREATE UNIQUE INDEX unique_clients_name ON clients (name) WHERE name <> '';

И избегайте oid, они бесполезны и устарели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...