Первичные ключи MySql и нулевые значения

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

Например.

если column_a=1 и column_b = пустой указатель, я могу вставить column_a=1 и column_b=null так, как мне нравится

если column_a=1 и column_b = 2 я могу только вставить это значение однажды.

Существует ли способ применить это ограничение кроме, возможно, изменения столбцов к Не Пустые и устанавливающие значения по умолчанию?

16
задан stevebot 21 June 2010 в 16:15
поделиться

1 ответ

http://dev.mysql.com/doc/refman/5.0/en/create-index.html

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

Итак, нет, вы не можете заставить MySQL рассматривать NULL как уникальное значение. Думаю, у вас есть пара вариантов: вы можете сделать то, что предложили в своем вопросе, и хранить "специальное значение" вместо null, или вы можете использовать движок BDB для таблицы. Однако я не думаю, что это незначительное различие в поведении требует необычного выбора механизма хранения.

18
ответ дан 30 November 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: