ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 시퀀스 (sequence)
    SQLServer 2020. 1. 10. 14:34

    테스트 환경

     - OS : Windows 2008 R2 DataCenter

     - DBMS : SQL Server 2012 Enterprise Edition + SP4

     

    내용

    SQL Server 2012 부터 Sequence 가 지원됩니다.

    IDENTITY 의 일부 기능을 대체 가능해 보입니다.

     

    구문
    CREATE SEQUENCE [schema_name . ] sequence_name
    [ AS [ built_in_integer_type | user-defined_integer_type ] ]
    [ START WITH ]
    [ INCREMENT BY ]
    [ { MINVALUE [ ] } | { NO MINVALUE } ]
    [ { MAXVALUE [ ] } | { NO MAXVALUE } ]
    [ CYCLE | { NO CYCLE } ]
    [ { CACHE [ ] } | { NO CACHE } ]
    [ ; ]

     

    일반적인 주의

    시퀀스 번호는 현재 트랜잭션 범위 외부에서 생성되며, 시퀀스 번호를 사용하는 트랜잭션이 커밋되는지 또는 롤백되는지 여부에 관계없이 사용됩니다. 

     

    CACHE 옵션은 성능 향상을 위해 지정된 수의 시퀀스 번호를 미리 할당하는 기능이며, 전원 오류와 같은 예기치 않은 종료로 인해 캐시에 남아 있는 시퀀스 번호가 손실될 수 있습니다.

     

    예제

    decimal 데이터 형식을 사용하여 0부터 255 사이 범위의 DecSeq 라는 시퀀스를 만듭니다.
    시퀀스는 125부터 시작하여 번호가 생성될 때마다 25씩 증가합니다.
    시퀀스가 순환하도록 구성되었기 때문에 값이 최대값 200을 초과하는 경우 최소값 100에서 다시 시작합니다.

    CREATE SEQUENCE Test.DecSeq
    AS decimal(3,0)
    START WITH 125
    INCREMENT BY 25
    MINVALUE 100
    MAXVALUE 200
    CYCLE
    CACHE 3
    ;

     

    시퀀스 값 확인 하는 방법

    SELECT NEXT VALUE FOR Test.DecSeq;

     

    DML 문장에서 시퀀스 사용

    insert into tbl_1 (a, b, c) values (NEXT VALUE FOR Test.DecSeq, 1, 'a');

     

    시퀀스 값 변수에 담기

    declare @nextseq int

    set @nextseq = NEXT VALUE FOR Test.DecSeq

    insert into tbl_1 (a, b, c) values (@nextseq, 1, 'a');

     

     

     

     

    'SQLServer' 카테고리의 다른 글

    CTE (공통 테이블 식)  (0) 2020.01.13
    오브젝트 사용공간 확인 (sp_spaceused)  (0) 2020.01.10
    SQL Server 2012 설명서  (1) 2020.01.10
    AdventureWorks2012 설치  (0) 2020.01.10
    show advanced options  (0) 2020.01.09
Designed by Tistory.