Какой смысл добавлять NOT NULL в поле первичного ключа в MySQL? - PullRequest
11 голосов
/ 17 августа 2010

Какой смысл добавлять NOT NULL в поле первичный ключ ? Первичный ключ уже не нулевой + уникальный .

Вот пример:

CREATE TABLE student (
  id int(11) AUTO_INCREMENT NOT NULL,
  name varchar(255),
  PRIMARY KEY(id)
)

Почему бы не определить это так:

CREATE TABLE student (
  id int(11) AUTO_INCREMENT,
  name varchar(255),
  PRIMARY KEY(id)
)

Ответы [ 3 ]

14 голосов
/ 17 августа 2010

Они одинаковы.Первичный ключ получил NOT NULL автоматически .

5 голосов
/ 17 августа 2010

Вы спрашиваете, почему люди не хотят добавлять NOT NULL, когда это не нужно?Наверное, просто потому, что это хороший стиль.И делает это явным для читателя.

3 голосов
/ 17 августа 2010

NULL не эквивалентно NULL (так как NULL указывает на неизвестное или отсутствующее значение), поэтому вам будет разрешено иметь несколько записей с NULL для идентификатора, даже если есть первичный ключ/ определено уникальное ограничение, следовательно, используется NOT NULL.Это если MySql даже позволяет вам определять первичный ключ в пустом поле.

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

...