2013-11-28 2 views
0

Я создал класс полета, и вот его описание.сбрасывать первичный ключ из таблицы в mysql

mysql> desc flight_class; 

+----------+--------------+------+-----+---------+-------+ 
| Field | Type   | Null | Key | Default | Extra | 
+----------+--------------+------+-----+---------+-------+ 
| FID  | varchar(5) | YES | MUL | NULL |  | 
| amount | decimal(7,2) | YES |  | NULL |  | 
| no_seats | decimal(2,0) | YES |  | NULL |  | 
| class_id | int(11)  | NO | PRI | 0  |  | 
+----------+--------------+------+-----+---------+-------+ 

то я хочу сделать class_id внешним ключом.

отбросить первичный ключ я сказал

mysql> alter table flight_class drop primary key; 
ERROR 1025 (HY000): Error on rename of '.\flysafe\#sql-76c_1' to '.\flysafe\flight_class' (errno: 150) 

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

спасибо anirudh.

+0

@VijaykumarHadalgi Этот вопрос об удалении первичного ключа автоинкрементируемого. – Barmar

+0

@Barmar: yes u'r rite Я не проверял с _err no 150_ –

ответ

1

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

Вы должны удалить свойство автоинкрементного перед удалением ключа:

ALTER TABLE flight_class MODIFY id INT NOT NULL; 
ALTER TABLE flight_class DROP PRIMARY KEY; 

Обратите внимание, что у вас есть составной первичный ключ, который охватывает все три столбца и идентификатор не гарантированно будет уникальным.

Если это случится быть уникальным, вы можете сделать это, чтобы быть PRIMARY KEY и AUTO_INCREMENT снова:

ALTER TABLE flight_class MODIFY id INT NOT NULL PRIMARY KEY AUTO_INCREMENT; 
Смежные вопросы