질문: 하나의 기본 키를 유지하면서 MySQL 테이블의 열에서 기본 키를 제거하려면 어떻게 해야 합니까?
시나리오:
고려 사용자 고객을 라이브 MySQL 데이터베이스의 권한에 매핑하는 다음 테이블 스키마:
mysql> describe user_customer_permission; +------------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | user_customer_id | int(11) | NO | PRI | NULL | | | permission_id | int(11) | NO | PRI | NULL | | +------------------+---------+------+-----+---------+----------------+ 3 rows in set (0.00 sec)
id를 기본 키로 유지하면서 user_customer_id 및Permission_id에 대한 기본 키를 제거하려고 합니다. 그러나 alter table user_customer_permission drop 기본 키 명령을 사용하여 그렇게 하려고 합니다. 오류가 발생합니다.
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
답변:
자동 증분 열에는 인덱스가 필요합니다. 인덱스가 없으면 자동 증가 열을 유지하는 데 비용이 너무 많이 듭니다. 따라서 MySQL에서는 자동 증가 열이 인덱스의 가장 왼쪽 부분이 되도록 요구합니다.
user_customer_id 및Permission_id에서 기본 키를 제거하려면 다음 단계를 따르십시오.
제거 자동 증가 속성 id:
ALTER TABLE user_customer_permission MODIFY id INT NOT NULL;
기본 키 삭제:
ALTER TABLE user_customer_permission DROP PRIMARY KEY;
복합 PRIMARY KEY는 원래 세 개의 열을 모두 포함했으며, id는 고유하다고 보장되지 않습니다. 그러나 ID가 고유한 경우 이를 PRIMARY KEY로 만들고 다시 AUTO_INCREMENT로 만들 수 있습니다.
ALTER TABLE user_customer_permission MODIFY id INT NOT NULL PRIMARY KEY AUTO_INCREMENT;
위 내용은 하나를 유지하면서 MySQL에서 여러 기본 키를 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!