MySQL InnoDB: 기본 키가 아닌 자동 증분
기본 키가 아닌 키를 자동으로 늘릴 수 있습니까?
표 "book_comments"
book_id medium_int
timestamp medium_int
user_id medium_int
vote_up small_int
vote_down small_int
comment text
comment_id medium_int
Primary key -> (book_id, timestamp, user_id)
이 테이블에는 다른 인덱스가 없습니다.하지만, 저는 다음을 만들고 싶습니다.comment_id열 자동 증분을 사용하여 다른 테이블을 쉽게 만들 수 있습니다.
표 "book_comments_votes"
comment_id (medium_int)
user_id (medium_int)
Primary key -> (comment_id, user_id)
사용자는 북 코멘트당 한 번만 투표할 수 있습니다.이 테이블은 기본 키를 기준으로 이 규칙을 적용합니다.
질문:.
기본 키가 아닌 키를 자동으로 증분할 수 있습니까?comment_id표 "book_book"의 열?
대안, 토론.
위에서 설명한 것처럼 단순화를 위해 이 작업을 수행하고자 합니다.대안은 유망하지 않습니다.
- commnet_id PK를 만들고 다음에 대한 고유 인덱스를 통해 무결성을 적용합니다.
book_id, timestamp, user_id이 경우, 저는 추가 인덱스를 작성할 것입니다. - PK를 유지하고 다음에서 comment_id를 바꿉니다.
book_comments_votesPK 전체와 함께.이것은 테이블의 크기를 세 배 이상 늘릴 것입니다.
제안?생각은?
네, 가능합니다.해당 열을 인덱스로 만들기만 하면 됩니다.
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;
insert into test(
testID,
string
)
values (
1,
'Hello'
);
insert into test(
testID,
string
)
values (
2,
'world'
);
'testInc'에 대한 자동 증분 값을 가진 행을 삽입합니다.하지만 이것은 정말 멍청한 짓입니다.
이미 올바른 방법을 말씀하셨습니다.
"comment_id PK를 만들고 book_id, timestamp, user_id에 대한 고유 인덱스를 통해 무결성을 강화합니다."
그것이 바로 당신이 해야 할 일입니다.향후 쿼리에 필요한 테이블에 대한 적절한 기본 키를 제공할 뿐만 아니라 최소한의 놀라움의 원칙도 충족합니다.
기존 테이블이 있습니다.이미 기본 키를 제공한 경우comment_id유일한 목적은 auto_message를 설정하는 것입니다.기본 키를 해당 열에 놓을 수 있습니다.MySQL을 사용하면 키 속성이 있는 열에서 auto_increment에 액세스할 수 있습니다.그러니 색인을 사용해보거나,unique key로.comment_id아래와 같이
1.기본 키 제거
ALTER TABLE `book_comments` MODIFY `comment_id` INT(5) NOT NULL;
ALTER TABLE `book_comments` DROP PRIMARY KEY ;
- 더하다
AUTO_INCREMENT와 함께UNIQUE_KEY소유물.
ALTER TABLE 'brand_keywords' CHANGE COLUMN 'comment_id' 'comment_id' INT(5) NOT NULL AUTO_INCREMENT UNIQUE;
MySQL 5.5의 경우, 이 기능이 없어도 가능할 것으로 보입니다.
색인 또는 기본 키 자동 증분과 함께 제공될 INT 필드.
언급URL : https://stackoverflow.com/questions/14086324/mysql-innodb-autoincrement-non-primary-key
'programing' 카테고리의 다른 글
| Oracle 테이블에서 모든 열 및 상수 값 선택 (0) | 2023.09.03 |
|---|---|
| Oracle ingo에 연결하는 방법 (0) | 2023.09.03 |
| SqlCommand를 재사용하시겠습니까? (0) | 2023.09.03 |
| 컴파일러가 이 표현식 swift 4를 유형 검사할 수 없습니까? (0) | 2023.09.03 |
| 팬더의 이동 열 데이터 프레임이 하나씩 증가합니까? (0) | 2023.09.03 |