Как изменить первичный ключ в SQL на auto_increment? - PullRequest
6 голосов
/ 24 апреля 2010

У меня есть таблица в MySQL с первичным ключом:

mysql> desc gifts;
+---------------+-------------+------+-----+---------+-------+
| Field         | Type        | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| giftID        | int(11)     | NO   | PRI | NULL    |       |
| name          | varchar(80) | YES  |     | NULL    |       |
| filename      | varchar(80) | YES  |     | NULL    |       |
| effectiveTime | datetime    | YES  |     | NULL    |       |
+---------------+-------------+------+-----+---------+-------+

но я хотел сделать это auto_increment.

Следующее утверждение не выполнено. Как это можно изменить, чтобы оно могло работать? спасибо

mysql> alter table gifts modify giftID int primary key auto_increment;
ERROR 1068 (42000): Multiple primary key defined

1 Ответ

8 голосов
/ 24 апреля 2010

Не указывать атрибут primary key:

ALTER TABLE gifts MODIFY giftID INT AUTO_INCREMENT;

Некоторые атрибуты столбца, такие как PRIMARY KEY, не являются в точности свойствами столбца, а являются ярлыками для других вещей. Например, столбец, помеченный PRIMARY KEY, помещается в индекс PRIMARY. Кроме того, все столбцы в индексе PRIMARY имеют атрибут NOT NULL. (Кроме того: чтобы иметь первичный ключ из нескольких столбцов, вы должны использовать отдельное условие ограничения, а не несколько атрибутов PRIMARY KEY столбца.) Поскольку столбец уже находится в индексе PRIMARY, его не нужно указывать снова когда вы изменяете столбец. Попробуйте SHOW CREATE TABLE gifts;, чтобы увидеть влияние использования атрибута PRIMARY KEY.

...