2012-01-09 2 views
-1

mysql의 테이블에 다른 기본 키를 추가하고 싶습니다. phpmyadmin을 사용하여 mysql 서버와 통신합니다. 내가 원하는 필드에 대한 기본 아이콘을 클릭하여 내게이 오류 준다 경우 :mysql의 테이블에 다른 기본 키를 추가하십시오.

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

편집 :

여기

쿼리의 :

ALTER TABLE `files` DROP PRIMARY KEY ,ADD PRIMARY KEY (`file_type`) 

내가 그것을 어떻게 할 수 있습니까?

+0

왜 기본 키가 하나 더 필요합니까? –

+0

하나의 기본 키만 가질 수 있지만 (여러 열의 합성어 일 수 있음) 달성하고자하는 구체적인 예를 들면 다른 해결책이있을 수 있습니다. –

+0

@ Shakti : 중복 된 레코드가 없도록 3 개의 열을 조합해야합니다. –

답변

6

"기본"키의 이름에 따르면, 그 중 하나만있을 수 있습니다 (참조 : 하이랜더).

당신이 시도하고 싶은 것이 가장 큰 purpouses의 기본처럼 행동 고유 열쇠입니다. Auto_increment가 두 번째로 사용된다면 어떤 purpouse도 수행하지 못하는 것 같습니다. 정확히 두 개의 필드가 같은 정보를 전달한다는 점은 무엇입니까?

는 오류 메시지가 말한다
0

, 내 생각 :

AUTO_INCREMENT 컬럼 키해야합니다.

그래서 처음이 쿼리를 사용

ALTER TABLE 'files' CHANGE 'id' 'id' INT(10) UNSIGNED NOT NULL; 

이는 AUTO_INCREMENT를 제거합니다.

또한 다른 답변에서 제안한대로 Uniqe 키를 사용하는 것이 좋습니다. 각 테이블에는 항상 (거의) ID 열이 있어야한다고 생각합니다.

3

나는 귀하의 경우에 당신이 필요로하는 것이 합성 키임을 믿습니다. 이 경우

CREATE TABLE track(
    album CHAR(10), 
    disk INTEGER, 
    posn INTEGER, 
    song VARCHAR(255), 
    PRIMARY KEY (album, disk, posn) 
) 

, 당신의 테이블 구조를 잘 모르겠지만, 여기 here에서 가져온 일반적인 예입니다, 당신이 필요로 중복 기록을 피하기 3 열 조합이있다. 시나리오를 이해하는데 실수가 있다면 알려주십시오.

-1

기존 키를 포함하여 원하는 모든 필드를 기본 키로 표시 할 수 있습니다. 시스템은 내부적으로 기존의 것을 삭제하고 사용자가 표시 한 모든 것을 설정합니다.

0

테이블에 기본 키를 한 번만 지정할 수 있습니다. 중복 레코드를 방지하기 위해 UNIQUE KEY를 선호 할 수 있습니다.

ALTER TABLE Persons ADD UNIQUE (P_Id)

관련 문제