Несколько столбцов уникальный ключ позволяет несколько строк - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть таблица MySQL с 4 столбцами

Column  Type        Null  Default
----------------------------------
id      int(11)     No    None     AUTO_INCREMENT
col1    int(11)     No    None
col2    int(11)     No    None
col3    varchar(20) Yes   Null

Я создал индекс с col1, col2, col3, так как я не хочу повторяющихся строк.Я понимаю, что значение NULL считается отдельным, поэтому в таблице допускаются повторяющиеся строки.

Какова лучшая альтернатива, чтобы у меня могли быть строки с уникальными значениями для col1, col2, col3?

Ответы [ 3 ]

1 голос
/ 23 февраля 2012

Способ, которым меня учили понимать NULL, состоит в том, что NULL - это состояние, а не значение.Таким образом, вы на самом деле не имеете отдельного значения с NULL.На самом деле я бы хотел использовать пустую строку вместо NULL или установить другое значение по умолчанию.

1 голос
/ 23 февраля 2012

Вы можете установить NOT NULL на col3 и установить значение по умолчанию ''.

0 голосов
/ 23 февраля 2012

Если вы хотите, чтобы база данных обеспечивала это, вариантов не так много. Поскольку вы не можете заставить базу данных считать NULL ничего, кроме отличного, вы можете либо:

  • Используйте пустую строку в столбце вместо NULL. Это вызовет проблемы, только если "" является допустимым значением и вы хотите, чтобы оно отличалось от фактического значения NULL.
  • Используйте пустую строку в столбце вместо NULL и добавьте логический столбец, который указывает значение NULL. Добавьте это и к уникальному индексу, и база данных отделит «поддельный NULL» от пустых строк.

Обе опции потребуют от вас установить для col3 значение NOT NULL и выполнить некоторое сопоставление значений при вставке / выборе.

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