2010-05-20 2 views
3

Я пытаюсь изменить таблицу с добавлением нового столбца, устанавливая ее как автоматическое приращение и с помощью ключа.mysql add auto increment и дополнительный ключ

В таблице уже есть один ключ, и этот будет дополнением. Ошибка, которую я получаю, следующая.

error : Multiple primary key defined 

Мой код:

alter table user add column id int (11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; 

Я также пытается оберточной имя ключа т.е.

alter table user add column id int (11) NOT NULL AUTO_INCREMENT PRIMARY (id) KEY FIRST; 

Но до сих пор не повезло.

Как это сделать?

+0

Покажите нам вывод 'SHOW CREATE TABLE'. –

ответ

3

nathan довольно ответили на вопрос.

Вы найдете имя (имена) существующего индекса (ов) с помощью команды SQL SHOW INDEX FROM mydb.mytable.

Сначала необходимо отбросить существующий индекс, используя DROP_INDEX existing_index ON mydb.mytable.

Затем вы изменяете таблицу и добавляете основной код в свой код.

И, наконец, вы создаете другой индекс как уникальный индекс, используя CREATE UNIQUE INDEX unique_index ON mydb.mytable (column).

+0

Что такое синтаксис для 1) нахождения имени индекса, 2) удаления индекса и 3) создания уникального? – Kieveli

+0

См. Пересмотренный ответ. Все это в руководстве MySQL для вашей конкретной версии MySQL по адресу http://dev.mysql.com/doc/index.html –

2

MySQL не поддерживает столбцы AUTO_INCREMENT, которые не являются первичным ключом. Один из вариантов заключается в том, чтобы сделать столбец AUTO_INCREMENT первичным ключом и просто иметь уникальное ограничение для другого «ключа».

+1

На самом деле, это так. То, что он не поддерживает, - это 2 первичных ключа. –

+0

Ничего себе, ты прав @ypercube, я много лет думал иначе. Документы не очень понятны. Благодаря! – nathan

+0

Вы также можете добавить AUTO_INCREMENT в UNIQUE INDEX – Marcin