Уникальное ограничение, которое позволяет пустые значения в MySQL - PullRequest
120 голосов
/ 28 августа 2009

У меня есть поле, в котором хранятся коды продуктов. Коды уникальны, но некоторые продукты просто не имеют кода. Я не могу придумать коды, потому что это коды поставщиков.

Возможно ли подобное ограничение в MySQL?

Я новичок с хранимыми процедурами и триггерами, поэтому, если решение включает один из них, пожалуйста, будьте терпеливы.

Обновление: Столбец НЕ является пустым. Вот почему я не смог этого сделать.

Ответы [ 3 ]

178 голосов
/ 28 августа 2009

Да, вы можете сделать это. См. справочник MySQL (версия 5.5) .

Индекс UNIQUE создает такое ограничение, что все значения в индексе должны быть различны. При попытке добавить новую строку со значением ключа, совпадающим с существующей строкой, возникает ошибка. Для всех механизмов индекс UNIQUE допускает несколько значений NULL для столбцов, которые могут содержать NULL.

13 голосов
/ 28 августа 2009

Да, если вы сделаете столбец кода продукта обнуляемым (не объявлен с помощью NOT NULL), уникальный ключ позволит иметь несколько строк с NULL кодами продукта.

8 голосов
/ 28 августа 2009

MySQL по-прежнему позволяет нескольким строкам иметь значение NULL в уникальном столбце.

...