>데이터 베이스 >MySQL 튜토리얼 >MySQL InnoDB에서 기본이 아닌 키를 자동 증가시킬 수 있습니까?

MySQL InnoDB에서 기본이 아닌 키를 자동 증가시킬 수 있습니까?

DDD
DDD원래의
2024-11-01 17:16:301117검색

Can I Auto-Increment a Non-Primary Key in MySQL InnoDB?

MySQL InnoDB: 비기본 키 자동 증가

MySQL InnoDB에서는 비기본 키 자동 증가가 가능합니다. 열이지만 그렇게 하는 것은 일반적으로 그렇지 않습니다. 권장됩니다.

질문:

기본이 아닌 키, 특히 book_comments 테이블의 comment_id 열을 자동으로 증가시킬 수 있습니까?

대안:

질문자 자동 증가 비기본 키 사용에 대한 두 가지 대안을 제안합니다.

  • comment_id를 기본 키로 만들고 (book_id, timestamp, user_id)에 대한 고유 인덱스로 무결성을 강화합니다.
  • 유지 기존 기본 키 및 comment_id를 book_comments_votes의 전체 기본 키로 바꿉니다. 테이블

그러나 이러한 대안에는 불필요한 인덱스 오버헤드가 추가되거나 테이블 크기가 크게 증가하는 등의 단점이 있습니다.

답변:

예, 해당 열에 인덱스를 생성하여 기본 키가 아닌 키를 자동 증가시킬 수 있습니다. 다음 예에서는 자동 증가 testInc 열이 있는 테이블을 생성합니다.

<code class="sql">CREATE TABLE `test` (
  `testID` int(11) NOT NULL,
  `string` varchar(45) DEFAULT NULL,
  `testInc` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`testID`),
  KEY `testInc` (`testInc`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;</code>

그러나 전문가들은 이러한 관행을 강력히 권고합니다. 보다 적절한 접근 방식은 comment_id를 기본 키로 만들고 (book_id, timestamp, user_id)의 고유 인덱스를 통해 무결성을 강화하는 것입니다. 이 접근 방식은 테이블에 대한 적절한 기본 키를 제공하고 최소 놀라움의 원칙을 준수합니다.

위 내용은 MySQL InnoDB에서 기본이 아닌 키를 자동 증가시킬 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.