2013-11-28 4 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

이 자동 증가 기본 키를 제거하는 방법에 대한 것입니다 : 그것은 고유하게 발생하는 경우

, 당신은 다시 PRIMARY KEY와 AUTO_INCREMENT 할 수 있습니다. – Barmar

+0

@Barmar : 예 u'r rit은 _err으로 확인하지 않았습니다. 150_ –

답변

1

인덱스가 없으면 자동 증가 열을 유지하는 것이 너무 비쌉니다. 따라서 자동 증가 열이 인덱스의 가장 왼쪽 부분이되어야합니다.

당신은 키를 삭제하기 전에 자동 증가 속성을 제거해야합니다 : 모든 세 개의 열을 포함하고 ID가 고유 보장되지 않습니다 복합 기본 키가

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

참고. 그 질문 @VijaykumarHadalgi

ALTER TABLE flight_class MODIFY id INT NOT NULL PRIMARY KEY AUTO_INCREMENT; 
관련 문제