[sql] MySQL 열을 AUTO_INCREMENT로 변경

AUTO_INCREMENT사실 이후 기본 키 열을 만들도록 테이블을 수정하려고합니다 . 다음 SQL을 시도했지만 구문 오류 알림이 나타납니다.

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

내가 잘못하고 있거나 불가능합니까?

+ -------------------- +
| 버전 () |
+ -------------------- +
| 5.0.75-0 우분투 10.2 |
+ -------------------- +



답변

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment


답변

Roman은 옳지 만 auto_increment 열은 PRIMARY KEY 또는 UNIQUE KEY의 일부 여야하며 거의 100 %의 경우 PRIMARY KEY를 구성하는 유일한 열이어야합니다.

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY


답변

내 경우에는 내가 넣을 때만 효과가 not null있었습니다. 나는 이것이 제약이라고 생각합니다.

ALTER TABLE document MODIFY COLUMN document_id INT NOT NULL AUTO_INCREMENT;


답변

이를 수행하는 SQL은 다음과 같습니다.

ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT;

SQL이 작동하지 않는 데는 몇 가지 이유가 있습니다. 먼저 데이터 유형 ( INT이 경우)을 다시 지정해야합니다 . 또한 변경하려는 열을 색인화해야합니다 (기본 키일 필요는 없지만 일반적으로 원하는 것임). 또한 AUTO_INCREMENT각 테이블마다 하나의 열만 있을 수 있습니다 . 따라서 열이 색인화되지 않은 경우 다음 SQL을 실행할 수 있습니다.

ALTER TABLE `document` MODIFY `document_id` INT AUTO_INCREMENT PRIMARY KEY;

자세한 내용은 MySQL 설명서 ( http://dev.mysql.com/doc/refman/5.1/en/alter-table.html 및 수정 열 구문 및 http://dev.mysql.com/doc)를 참조하십시오. 열 지정에 대한 자세한 내용은 /refman/5.1/en/create-table.html


답변

auto_increment지시문 앞에 열 유형을 지정해야합니다 ( 예 🙂 ALTER TABLE document MODIFY COLUMN document_id INT AUTO_INCREMENT.


답변

AUTO_INCREMENT 열 데이터 유형의 일부이므로 열에 대한 전체 데이터 유형을 다시 정의해야합니다.

ALTER TABLE document
ALTER COLUMN document_id int AUTO_INCREMENT

( int예를 들어, 열의 이전 유형으로 설정해야합니다)


답변

다음과 같이 할 수 있습니다 :

 alter table [table_name] modify column [column_name] [column_type] AUTO_INCREMENT;