MySQL 열을 AUTO_INCREMENT로 변경


194

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

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

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

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

답변:


380
ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

3
INT (4)를 제안하는 이유가 궁금합니다. 특별한 이유가 있습니까?
Steven Oxley

3
@Steven Oxley 테이블을 그렇게 선언했기 때문에.
C. Ross

30
괄호 사이에 숫자를 지정하면 MySQL 정수 유형에 대해 정확히 아무 것도 수행하지 않습니다 . 숫자에 의해 영향을받을 수있는 유일한 것은 디스플레이 너비이며,이를 수행하는 것은 클라이언트의 책임입니다. 그러나 속지 말고 VARCHAR 및 DECIMAL 유형과 마찬가지로 작동한다고 생각하십시오.이 경우 저장할 수있는 데이터의 양이 실제로 지정되지만 INT의 특정 맛은 항상 정확한 저장을 허용합니다 동일한 범위의 값
Roland Bouman

이 작업을 수행하는 동안 항상 기본 키 오류가 발생하므로이 작업을 수행해야합니다. SET FOREIGN_KEY_CHECKS = 0; ALTER TABLE 문서 DROP PRIMARY KEY; ALTER TABLE 문서 수정 열 document_id INT PRIMARY KEY AUTO_INCREMENT NOT NULL; SET FOREIGN_KEY_CHECKS = 1;
Fernando

당신은 기본 키로 열을 설정해야하기 때문에 하나의 열이 AUTO_INCREMENT는 (또한 참조 할 수 있기 때문에이 MySQL의에서 작동하지 않는 것 보다 롤랜드 보우만의 답변을
charlchad

74

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

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY

10
+1. 테이블 작성시 정의되지 않은 경우 기본 키가 필요합니다.

1
또한 이는 해당 열의 데이터가 이미 고유해야 함을 의미합니다.
Umair Malhi

10

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

ALTER TABLE document MODIFY COLUMN document_id INT NOT NULL AUTO_INCREMENT;

7

이를 수행하는 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


6

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


1
그것은해야한다MODIFY COLUMN
shxfee

5

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

ALTER TABLE document
ALTER COLUMN document_id int AUTO_INCREMENT

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


3

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

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

이것은 다른 모든 대답의 반복으로 보입니다.
Pang

2

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

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT

(예를 들어 보지 않았지만 이전에 열의 유형으로 설정해야합니다)


2

다음 쿼리를 사용하여 document_id가 자동으로 증가하도록 만들 수 있습니다

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

document_id를 기본 키로 만드는 것이 좋습니다.

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment PRIMARY KEY;

1
해당 열이 이미 기본 키이면 다시 선언 할 수 없으며 여러 기본 키에 대해 오류가 발생합니다 (약간 더 영리하다고 생각하고 동일한 기본 키임을 알 수 있습니다) . 그래서 경우에 당신은 단지 PRIMARY KEY를 생략하고 그것은 그 열에 기존의 기본 키 설정에 영향을주지 않습니다
조지 Birbilis

2

아래 진술은 효과가 있습니다. 열 이름에 대해 데이터 유형을 다시 언급해야합니다 (열 이전의 데이터 유형을 다시 선언하십시오).

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT;

2

위의 방법 중 어느 것도 작동하지 않으면 이것을 시도하십시오. 이것이 MYSQL에서 한 일이며 예, 열 이름 (document_id)을 두 번 작성해야합니다.

ALTER TABLE document
CHANGE COLUMN document_id document_id INT(11) NOT NULL AUTO_INCREMENT ;

1

mysql에서 열을 수정하기 위해 alter 및 modify 키워드를 사용합니다. 다음과 같은 테이블을 작성했다고 가정하십시오.

create table emp(
    id varchar(20),
    ename varchar(20),
    salary float
);

이제 자동 증가와 함께 열 ID의 유형을 정수로 수정하려고합니다. 다음과 같은 명령으로이를 수행 할 수 있습니다.

alter table emp modify column id int(10) auto_increment;

1

이전 테이블 구문 :

CREATE TABLE apim_log_request (TransactionId varchar(50) DEFAULT NULL);

TransactionId를 자동 증분으로 변경하려면이 쿼리를 사용하십시오.

ALTER TABLE apim_log_request MODIFY COLUMN TransactionId INT auto_increment;


1

이처럼 :

alter table document modify column id int(11) auto_increment;


0

열을 다시 정의 할 때 데이터 유형을 다시 지정하고 auto_increment를 데이터 유형의 일부로 추가해야합니다.

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

0

열을 기본 키와 auto_increment로 동시에 설정 :

  mysql> ALTER TABLE persons MODIFY COLUMN personID INT auto_increment PRIMARY KEY;
    Query OK, 10 rows affected (0.77 sec)
    Records: 10  Duplicates: 0  Warnings: 0

    mysql>


-3

다음 쿼리를 사용하십시오.

ALTER TABLE YourTable DROP COLUMN IDCol

ALTER TABLE YourTable ADD IDCol INT IDENTITY(1,1)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.