поле auto_increment и другой первичный ключ в таблице - PullRequest
0 голосов
/ 17 октября 2011

У меня есть таблица с определенным первичным ключом (post_id, category_id). В этой таблице реализовано отношение Many_Many. Как добавить поле автоинкремента в эту таблицу (я обычно использую поле auto_increment, чтобы легко получать записи и использовать значение auto_increment в форме). когда я пытаюсь добавить поле auto_increment, я получаю эту ошибку:

 Multiple primary key defined

есть ли необходимость иметь поля auto_increment, когда у меня есть составной первичный ключ? если да как это сделать?

Ответы [ 2 ]

1 голос
/ 17 октября 2011

Если в таблице есть поле автоинкремента, это должен быть первичный ключ. Может быть только один первичный ключ.

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

Единственный раз, когда я бы создал auto_increment в этом случае, это если естественный PK будет состоять из неподходящих типов данных (varchar и т. Д.), Или PK будет большим (в байтах) или охватит довольно много столбцов

0 голосов
/ 17 октября 2011

post_id, category_id должны быть внешними ключами вашей таблицы соединений.

это должно выглядеть так:

--------------
post_category
==============
pkId (pk) (auto increment)
post_id (fk -> post table)
category_id (fk-> category table)
--------------
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...