IT 개발 노트/DATABASE

자동 증가 (Sequence, Auto Increment)

뺄칸 2024. 11. 26. 10:47

Sequence

유일한 값(Unique Value)을 생성하는 객체입니다. 테이블과는 독립적으로 동작하는 객체로 별도의 생성 과정을 거쳐야 사용할 수 있습니다. 별도의 객체이기 때문에 글로벌하게 동작합니다.

 

Oracle, Tibero

CREATE SEQUENCE [스키마명].[생성할 시퀀스명]
    INCREMENT BY 1  -- 증가값 설정
    START WITH 1    -- 시작값 설정 (MINVALUE 보다 같거나 커야한다.)
    MINVALUE 1      -- 시퀀스가 시작되는 최소값
    MAXVALUE 9999   -- 시퀀스의 최대값
    NOCYCLE         -- 최대값 도달시 반복 여부 (CYCLE:반복, NOCYCLE:반복안함)
    NOORDER;        -- 발생 순서 보장 (ORDER:순서보장, NOORDER:보장안함)
    

-- 현재 유일값 얻어오기
SELECT [시퀀스명].CURRVAL
  FROM dual;
  
-- 유일값 생성 후 얻어오기
SELECT [시퀀스명].NEXTVAL
  FROM dual;

-- 유일값 생성하여 입력하기
INSERT INTO TEMP (Seq, ItemID) VALUES ([시퀀스명].NEXTVAL, 10001);

 

Auto Increment

유일한 값(Unique Value)을 생성하는 기능입니다. 테이블에 종속되어 동작하기 때문에 다른 프로시저나 질의어로 유니크 값을 생성하지 않는게 기본적인 방법입니다. 시퀀스처럼 동작하도록 설계도 가능합니다.

 

MySQL, MS-SQL

-- 테이블 생성할 때 증분값 문법.
CREATE TABLE [테이블명] (
    [컬럼명] [숫자형 데이터형식] IDENTITY ([초기값], [증가값]) [제약조건]
);

-- 테이블 생성할 때 증분값 넣어주기
CREATE TABLE Inventory (
    Seq int IDENTITY (1, 1) NOT NULL,
    ItemID int NOT NULL
);

 

 

사용하는 방법에 관하여...

Auto Increment는 mysql, mssql 데이터베이스에서 주로 사용하고 있으며, 많은 비중으로 이 기능을 사용하는게 보편적인 방법론입니다.
Sequence는 mssql에서도 지원하도록 기능이 추가되었으며, 사전에 유일값이 필요한 프로시저나 여러 대의 서버에서 중복되지 않는 유일한 값이 필요한 경우 사용합니다.