Лентюй, а что произойдёт в этом случае? Что будет первичным ключом и что будет индексом? Я похоже не понимаю что делает PRIMARY KEY и как создать первичный ключ.
Лентюй, Я правильно понимаю что при создании/изменении таблицы я могу указать несколько PRIMARY KEY, в том числе составных. Для них автоматически сделаемся индекс. И мне самому решать какой из них - первичный и я никак явно не говорю MYSQL о том какой ключ является первичным. То есть, грубо говоря, информация о том какой ключ является первичным -своего рода соглашение + MySQL не знает какой именно первичный. Или все таки можна явно указать "первичность" ключа.
Первичный ключ может быть только один.
НО
Первичный ключ может быть по нескольким полям. Это иногда может вводить в заблуждение, что их несколько, но это не так. Он всегда только один.
Я правильно понимаю что при создании/изменении таблицы я могу указать несколько PRIMARY KEY, в том числе составных. Для них автоматически сделаемся индекс. И мне самому решать какой из них - первичный и я никак явно не говорю MYSQL о том какой ключ является первичным. То есть, грубо говоря, информация о том какой ключ является первичным -своего рода соглашение + MySQL не знает какой именно первичный. Или все таки можна явно указать "первичность" ключа.
JackShcherbakov, Вы путаете PRIMARY KEY, FOREIGN KEY, INDEX.
PRIMARY KEY - данное ограничение позволяет однозначно идентифицировать каждую запись в таблице.
Первичный ключ должен содержать уникальные значения.
Первичный ключ не может содержать NULL значений.
Каждая таблица должна (хоть некоторые субд и разрешают не указывать явно PK) иметь первичный ключ, и каждая таблица может иметь только один первичный ключ.