Здравствуйте!
Пытаюсь удалить аттрибут PRIMARY KEY из представленной ниже таблицы!
+---------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+----------------+
| doughnut_name | varchar(10) | YES | | NULL | |
| doughnut_type | varchar(6) | YES | | NULL | |
| id | int | NO | PRI | NULL | auto_increment |
+---------------+-------------+------+-----+---------+----------------+
команда
ALTER TABLE `doughnut_list`
DROP PRIMARY KEY ;
Выбрасывается ошибка :
"ERROR: 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key"
Вроде бы понятно на что он ругается, что "
здесь может быть только одна колонка с автозаполнением и она должна быть объявлена как ключ"( ну из этой каряво переведённой фразы мне понятно лишь что он ругается на автоинкремент)
Я
ПЕРЕсоздал новое свойсто
id
но уже без
AUTO_INCREMENT
но с
PRIMARY KEY
+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| doughnut_name | varchar(10) | YES | | NULL | |
| doughnut_type | varchar(6) | YES | | NULL | |
| id | int | NO | PRI | NULL | |
+---------------+-------------+------+-----+---------+-------+
и выполняя команду
ALTER TABLE `doughnut_list` DROP PRIMARY KEY;
соотвественно получаем ожидаемый результат :
+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| doughnut_name | varchar(10) | YES | | NULL | |
| doughnut_type | varchar(6) | YES | | NULL | |
| id | int | NO | | NULL | |
+---------------+-------------+------+-----+---------+-------+
Но я чот запутался, если сама колонка с именем
id
не удаляется, то почему тогда интерпретатор скл ругается на
AUTO_INCREMENT
? ну удалился бы этот
PRIMARY KEY
но колонка то осталась бы, всмылсе
id
? Не понимаю этой механики т.е. получается чтобы удалить колонку которая является
PRIMARY KEY
и которая имеет так-же
AUTO_INCREMENT
нужно удалять её полностью, и пересоздавать? Или всё же есть способ сделать это в одну команду без пересоздания колонки? И вообще в чём связь
PRIMARY KEY
и
AUTO_INCREMENT
в данном случае? Почему получается эта ошибка , что мол нельзя дропнуть праймари ки, пока на этой колонке висит
AUTO_INCREMENT
? Колонка то по факту не удаляется, ну и пусть бы была себе с этим
AUTO_INCREMENT
-том...