2010-05-18 3 views
1
CREATE TABLE Orders 
-> (
-> ID SMALLINT UNSIGNED NOT NULL, 
-> ModelID SMALLINT UNSIGNED NOT NULL, 
-> Descrip VARCHAR(40), 
-> PRIMARY KEY (ID, ModelID) 
->); 

В принципе, мне кажется, что я создаю два первичных ключа на одном столе. Это верно?Поддерживает ли MySQL два первичных ключа на одной таблице?

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

Как моя система разрешает создание нескольких первичных ключей?

Просьба сообщить: какие правила регулируют это?

+0

Официально вы можете иметь N номеров * кандидатов * ключей и, самое большее, один первичный ключ. Ключи-кандидаты принудительно применяются с использованием уникального ограничения, в котором в качестве первичного ключа применяются принудительные ограничения первичного ключа. – Thomas

ответ

1

Подумайте, как он предлагает «КЛЮЧ». Таким образом, ключ будет содержать все указанные столбцы. В вашем случае вы можете иметь несколько строк с тем же «ID» и несколькими строками с тем же «ModelID», но никогда не должно быть двух строк с одинаковым «ID» и «ModelID».

Таким образом, в этом случае он не говорит о том, что идентификатор столбца должен быть уникальным и не сказать, что «ModelID» должен быть уникальным, а только комбинацией.

0

Вы можете иметь один первичный ключ (вот почему его называют ключ первичного)

Вы можете иметь несколько UNIQUE ключей, если вам нравится.

3

Ваша система не позволяет несколько первичных ключей - это создание ключа на основе 2-х колонок (ID, ModelID)

1

Вы делаете 1 первичный ключ. Но этот ключ представляет собой комбинацию из двух значений.

Это нехорошая вещь. Но в вашем случае это выглядит неправильно.

У вас, похоже, есть первичный ключ с именем ID и внешний ключ с именем ModelID. Вероятно, у вас должен быть индекс на ModelID, а ограничение первичного ключа на ID

+0

Если моя догадка правильная ............................................... – Bharanikumar

Смежные вопросы