Разрешает ли MySQL два первичных ключа в одной таблице? - PullRequest
1 голос
/ 18 мая 2010
CREATE TABLE Orders
-> (
->    ID SMALLINT UNSIGNED NOT NULL,
->    ModelID SMALLINT UNSIGNED NOT NULL,
->    Descrip VARCHAR(40),
->    PRIMARY KEY (ID, ModelID)
-> );

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

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

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

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

Ответы [ 4 ]

3 голосов
/ 18 мая 2010

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

1 голос
/ 18 мая 2010

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

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

1 голос
/ 18 мая 2010

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

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

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

0 голосов
/ 18 мая 2010

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

Вы можете иметь несколько UNIQUE клавиш, если хотите.

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