2010-06-22 3 views
17

나는 mysql db 테이블을 id (자동)에서 uid로 바꾼다. mysql은 기본 키와 자동 증가를 제거한다.

ALTER TABLE companies DROP PRIMARY KEY; 
ALTER TABLE companies ADD PRIMARY KEY (`uuid`); 

은 .. 내가 오류입니다 내가, 내가 기본 키로 드롭하기 때문에 비 자동 증가로 ID를 변경해야 이해
[SQL] ALTER TABLE companies DROP PRIMARY KEY; 
[Err] 1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key 

.? 기본 키 및 자동 증가를 제거하도록 열을 변경하는 구문은 무엇입니까? 당신은 자동 증가하고 단일 SQL 문에서 id 열에서 기본 키를 제거해야하는 경우

ALTER TABLE companies change id id ?????????? int(11) 

답변

24

,이 수행해야합니다

ALTER TABLE companies DROP PRIMARY KEY, CHANGE id id int(11); 

사실, 당신은 할 수 있어야 하나의 ALTER TABLE 쿼리의 모든 :

ALTER TABLE companies 
DROP PRIMARY KEY, 
CHANGE id id int(11), 
ADD PRIMARY KEY (uuid); 
+0

3 진술로하면 작동합니다 .. ALTER TABLE 회사가 id id int (11); ALTER TABLE 회사 DROP PRIMARY KEY; ALTER TABLE 회사 추가 PRIMARY KEY (uuid); – Brett

+1

내 경우에는 자동 증가 만 제거하고 싶습니다. 나는 이것을 시도했다 :'ALTER TABLE myTable CHANGE _id _id INT (12)'하지만 "CHANGE에 가까운 문법 오류"라고 말한다. 여기서 내가 뭘 잘못하고 있니? –

2

제거 자동 증가에 대한 쿼리는 다음과 같습니다

alter table companies DROP PRIMARY KEY, 
change id id int(11) NOT NULL 

이제 자동 증가가없는 테이블의 구조를 볼 수 있습니다.

다른 열을 기본 키를 추가 할 경우 자동 증가, 기본 키를 삭제하고 동일한 쿼리에 새 열을 기본 키를 추가 할 경우,이 쿼리

alter table companies add PRIMARY KEY(uuid) 

를 사용하고 사용 당신이 컬럼의 이름을 변경하지 않을 때는이 쿼리

alter table comapnies DROP PRIMARY KEY, 
    change id id int(11) NOT NULL, 
    add PRIMARY KEY(uuid) 
4

당신은 사용할 수 있습니다 MODIFY :

ALTER TABLE `companies` MODIFY `id` int(11), 
          DROP PRIMARY KEY, 
        ADD PRIMARY KEY (`uuid`); 

하나의 변경 문에서이 모든 작업을 원자 단위로 처리하므로 여러 문을 연속적으로 실행하는 것과 달리 쿼리간에 불일치가 발생할 가능성이 없습니다.

관련 문제