집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 자동 증가 열과 다른 기본 키를 모두 사용하려면 어떻게 해야 합니까?
MySQL은 자동 증가 열과 그렇지 않은 기본 키를 모두 정의하려고 할 때 문제를 제시합니다. 자동 증가 열. 기본적으로 MySQL에서는 자동 증가 열이 하나만 있을 수 있으며 이를 기본 키로 지정해야 한다고 규정합니다. 이는 테이블 성능 및 데이터 검색 효율성을 최적화하려고 할 때 혼란을 초래할 수 있습니다.
다음 예를 고려하십시오. id 열이 자동으로 표시된 멤버 테이블 시각적 모니터링을 쉽게 하기 위해 증분하고, memberid 열은 쿼리에서 구성원 식별을 위한 기본 키 역할을 합니다. 목표는 memberid를 기본 키로 설정하면서 자동 증가 기능을 유지하는 것입니다.
PRIMARY KEY(memberid)를 사용하여 테이블을 생성하려고 하면 오류가 발생합니다.
1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
오류에도 불구하고 자동 증가 열과 다른 기본 키를 모두 가질 수 있습니다. 다음은 두 가지 실행 가능한 접근 방식입니다.
1. 자동 증가 열 인덱스
id와 memberid를 모두 기반으로 효율적인 검색이 가능하도록 id 열에 인덱스를 생성합니다. 수정된 테이블 정의는 다음과 같습니다.
CREATE TABLE members ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `memberid` VARCHAR( 30 ) NOT NULL , `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `firstname` VARCHAR( 50 ) NULL , `lastname` VARCHAR( 50 ) NULL , PRIMARY KEY (`memberid`), KEY (`id`) ) ENGINE = MYISAM;
2. 자동 증가 열을 기본 키의 일부로 만들기
기본 키 조합에 id 열을 포함하도록 테이블을 다시 정의하여 id와 memberid를 모두 기본 키 식별을 위한 정의 요소로 만듭니다. 수정된 정의는 다음과 같습니다.
CREATE TABLE members ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `memberid` VARCHAR( 30 ) NOT NULL , `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `firstname` VARCHAR( 50 ) NULL , `lastname` VARCHAR( 50 ) NULL , PRIMARY KEY (`id`, `memberid`) ) ENGINE = MYISAM;
이러한 접근 방식 중 하나를 구현하면 시각적 편의를 위한 자동 증가 열의 필요성과 효율적인 멤버 식별을 위한 사용자 정의 키(memberid) 사용의 균형을 맞출 수 있습니다. 쿼리를 실행하면 테이블 성능이 저하되지 않습니다.
위 내용은 MySQL에서 자동 증가 열과 다른 기본 키를 모두 사용하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!