Skip to content

15. AUTO INCREMENT


1. AUTO INCREMENT Field

  • 자동 증분을 사용하면 새 레코드가 테이블에 삽입될 때 고유 번호가 자동으로 생성된다.
  • 종종 이것은 새 레코드가 삽입될 때마다 자동으로 생성되기를 원하는 기본 키 필드이다.


2. Syntax

1) MySQL

  • 다음은 Personid 열을 Persons 테이블의 자동 증가 기본 키 필드로 정의한다.


CREATE TABLE Persons (
    Personid int NOT NULL AUTO_INCREMENT,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (Personid)
);


  • MySQL은 AUTO_INCREMENT 키워드를 사용하여 자동 증가 기능을 수행한다.
  • 기본적으로 AUTO_INCREMENT의 시작 값은 1이며 새 레코드마다 1씩 증가한다.
  • AUTO_INCREMENT 시퀀스가 다른 값으로 시작하려면 다음 SQL 문을 사용한다.


ALTER TABLE Persons AUTO_INCREMENT = 100;


  • 고유한 값이 자동으로 추가되기 때문에 Persons 테이블에 새 레코드를 삽입하기 위해 Personid 열에 대한 값을 지정할 필요가 없다.


INSERT INTO Persons (FirstName, LastName)
VALUES ('Lars', 'Monsen');


  • 위의 SQL 문은 Persons 테이블에 새 레코드를 삽입한다.
  • Personid 열에는 고유한 값이 할당된다.
  • FirstName 열은 "Lars"로 설정되고 LastName 열은 "Monsen"으로 설정된다.


2) SQL Server

  • 다음은 Personid 열을 Persons 테이블의 자동 증가 기본 키 필드로 정의한다.


CREATE TABLE Persons (
    Personid int IDENTITY(1, 1) PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);


  • SQL Server는 IDENTITY 키워드를 사용하여 자동 증가 기능을 수행한다.
  • 기본적으로 IDENTITY의 시작 값은 1이며 새 레코드마다 1씩 증가한다.
  • Personid 열이 값 10에서 시작하고 5씩 증가하도록 지정하려면 IDENTITY(10, 5)로 변경한다.
  • 고유한 값이 자동으로 추가되기 때문에 Persons 테이블에 새 레코드를 삽입하기 위해 Personid 열에 대한 값을 지정할 필요가 없다.


INSERT INT Persons (FirstName, LastName)
VALUES ('Lars', 'Monsen');


  • 위의 SQL 문은 Persons 테이블에 새 레코드를 삽입한다.
  • Personid 열에는 고유한 값이 할당된다.
  • FirstName 열은 "Lars"로 설정되고 LastName 열은 "Monsen"으로 설정된다.


3) MS Access

  • 다음은 Personid 열을 Persons 테이블의 자동 증가 기본 키 필드로 정의한다.


CREATE TABLE Persons (
    Personid AUTOINCREMENT PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);


  • MS Access는 AUTOINCREMENT 키워드를 사용하여 자동 증가 기능을 수행한다.
  • 기본적으로 AUTOINCREMENT의 시작 값은 1이며 새 레코드마다 1씩 증가한다.
  • Personid 열이 값 10에서 시작하고 5씩 증가하도록 지정하려면 AUTOINCREMENT(10, 5)로 변경한다.
  • 고유한 값이 자동으로 추가되기 때문에 Persons 테이블에 새 레코드를 삽입하기 위해 Personid 열에 대한 값을 지정할 필요가 없다.


INSERT INTO Persons (FirstName, LastName)
VALUES ('Lars', 'Monsen');


  • 위의 SQL 문은 Persons 테이블에 새 레코드를 삽입한다.
  • Personid 열에는 고유한 값이 할당된다.
  • FirstName 열은 "Lars"로 설정되고 LastName 열은 "Monsen"으로 설정된다.


4) Oracle

  • Oracle에서는 코드가 조금 더 까다롭다.
  • 다음과 같이 CREATE SEQUENCE 문을 통해 시퀀스 객체를 사용하여 자동 증가 필드를 만들어야 한다.


CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;


  • 위의 코드는 1부터 시작하여 1씩 증가하는 seq_person이라는 시퀀스 객체를 만든다.
  • 또한 성능을 위해 최대 10개의 값을 캐시한다.
  • 캐시 옵션은 더 빠른 액세스를 위해 메모리에 저장할 시퀀스 값의 수를 지정한다.


  • Persons 테이블에 새 레코드를 삽입하려면 nextval 함수를 사용해야 한다.
  • 이 함수는 seq_person 시퀀스에서 다음 값을 검색한다.


INSERT INTO Persons (Personid, FirstName, LastName)
VALUES (seq_person.nextval, 'Lars', 'Monsen');


  • 위의 SQL 문은 Persons 테이블에 새 레코드를 삽입한다.
  • Personid 열에는 seq_person 시퀀스의 다음 번호가 할당된다.
  • FirstName 열은 "Lars"로 설정되고 LastName 열은 "Monsen"으로 설정된다.

References