2012-01-09 2 views
-1

Я хочу добавить еще один первичный ключ в таблицу в mysql. Я использую phpmyadmin для связи с сервером mysql. Когда я для требуемого поля нажмите на основной значок дает мне эту ошибку:Добавить другой первичный ключ в таблицу в mysql

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

Отредактировано:

вот запрос:

ALTER TABLE `files` DROP PRIMARY KEY ,ADD PRIMARY KEY (`file_type`) 

Как я могу это сделать?

+0

Зачем нужен еще один первичный ключ? –

+0

У вас может быть только один первичный ключ (хотя он может быть составным из нескольких столбцов), но если вы дадите конкретный пример того, чего вы хотите достичь, может возникнуть другое решение. –

+0

@Shakti: Мне нужна комбинация из трех столбцов, чтобы избежать дублирования записей. –

ответ

6

Как говорится в названии «первичного» ключа, может быть только один из них (ref: Highlander).

Что вы можете попробовать - это УНИКАЛЬНЫЙ КЛЮЧ, который действует как первичный для большинства пурпурных. Auto_increment, похоже, не выполняет никакой пурпусности, если используется второй раз - в чем смысл двух полей, содержащих точно такую ​​же информацию?

0

сообщение об ошибке говорит, я думаю:

столбец auto_increment должен быть ключ.

Поэтому использовать этот запрос первый:

ALTER TABLE 'files' CHANGE 'id' 'id' INT(10) UNSIGNED NOT NULL; 

это удалит auto_increment.

Кроме того, я рекомендую ключ Uniqe, как предложено другим ответом. Я считаю, что всегда (почти) должен быть столбец идентификатора в каждой таблице.

3

Я верю в ваш случай, вам нужен составной ключ. Я не знаю, структуры таблицы, но вот общий пример, взятый из here,

CREATE TABLE track(
    album CHAR(10), 
    disk INTEGER, 
    posn INTEGER, 
    song VARCHAR(255), 
    PRIMARY KEY (album, disk, posn) 
) 

В этом случае есть комбинация из 3-х колонок, которые позволяют избежать повторяющихся записей, как вам требуется. Пожалуйста, дайте мне знать, есть ли у меня ошибки в понимании вашего сценария.

-1

Вы можете пометить все поля, которые вы хотите в качестве первичных ключей, в том числе существующих. Система внутренне сбросит существующую и установит все, что вы отметили.

0

Мы можем предоставить первичный ключ только один раз для таблицы. Вы можете предпочесть УНИКАЛЬНЫЙ КЛЮЧ для предотвращения дублирования записей

ALTER TABLE Persons ADD UNIQUE (P_Id)

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