2011-07-26 2 views
3

명백한 답변으로 거의 비슷한 질문을 많이 봅니다. 그러나이 질문이 이미 여기에없는 것은 확실합니다.MySQL은 auto_increment없이 값을 증가시켜 새로운 열을 채 웁니다.

기존 테이블에 자동 증가 ID 열을 추가하고이를 기본 키로 설정해야합니다. 기존 데이터를 잃을 수는 없습니다.

성공적으로 테이블 구조를 변경할 수는 있지만 새 열의 잘린 데이터에 대한 오류가 발생합니다. 데이터를 볼 때 새 자동 증가 열의 모든 값이 null입니다 (따라서 고유하지 않습니다).

기본 키의 고유성을 보장하기 위해이 값을 어떻게 다시 채울 수 있습니까?

*** 임시 테이블에 기존 데이터를 덤핑하고 간단한 솔루션이있는 경우 다시 삽입하는 것을 피하는 것이 좋습니다.

현재 스크립트

alter table the_table add new_field int first; 
alter table the_table drop primary key, add primary key (new_field); 
alter table the_table change new_field new_field int unsigned not null auto_increment; 

는 내가 기본 키가 아닌 자동 증가 컬럼을 가질 수 없습니다로 순서로 스크립트를 실행합니다.

(MySQL은 5.3)

답변

9

하나

ALTER TABLE `the_table` ADD `new_field` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; 
+0

팁 주셔서 감사합니다,하지만이 결과 "SQL 오류 (1068) : 여러 개의 기본 키 정의는"난 그냥 당신에게 CREATE 문을 준 – tomfumb

+0

@tomfumb, 당신은 확실히 이전 주 드롭해야 키. –

+0

AHA 완벽! 많은 감사 – tomfumb

0

그냥 자동 증가 필드를 추가 이동에 기본 키하지 않고, 열을 생성하는 기본 키 및 자동 증가로 설정하십시오 :

ALTER TABLE `the_table` ADD `new_field` INT NOT NULL AUTO_INCREMENT 
+1

MySQL은 기본 키가 아닌 auto_increment 열을 허용하지 않습니다. – tomfumb

관련 문제