Как изменить первичный ключ в SQL к auto_increment?

У меня есть таблица в 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
6
задан nopole 24 April 2010 в 11:50
поделиться

1 ответ

Не использовать атрибут первичного ключа :

ALTER TABLE gifts MODIFY giftID INT AUTO_INCREMENT;

Определенные атрибуты столбца, такие как ПЕРВИЧНЫЙ КЛЮЧ , aren Не столько свойства столбца, сколько ярлыки для других вещей. Столбец с пометкой PRIMARY KEY , например, помещается в индекс PRIMARY .Более того, всем столбцам индекса PRIMARY присваивается атрибут NOT NULL . (Кроме того: чтобы иметь первичный ключ с несколькими столбцами, необходимо использовать отдельное условие ограничения, а не несколько атрибутов столбца PRIMARY KEY .) Поскольку столбец уже находится в индексе PRIMARY , вам не нужно указывать его снова при изменении столбца. Попробуйте ПОКАЗАТЬ СОЗДАТЬ ТАБЛИЦУ подарки; , чтобы увидеть, как влияет использование атрибута ПЕРВИЧНЫЙ КЛЮЧ .

8
ответ дан 16 December 2019 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: