티스토리 뷰

IT Story/DB

MS-SQL 시퀀스(Sequenc)

행복한소식까치 2018. 12. 5. 18:23
반응형


MS-SQL 2017로 업그레이드 후 알게된 편리한 기능 중에 하나인 시퀀스에 대해서 포스팅 하고자 합니다.


 행복한소식까치 

시퀀스(Squence) 설정 방법 및 지원 버전

  지원 버전 : MS-SQL 2012 버전부터 지원한다고 합니다.

  생성 방법 

  CREATE SEQUENCE  G_Seq                   -- 시퀀스 명 

    AS int -- 타입

     START WITH 1 -- 시작값

     INCREMENT BY 1 -- 증가값

     MINVALUE -2147483648 -- 최소값 (생략가능: 표시값은 생략시 기본값입)

     MAXVALUE 2147483647 -- 최대값 (생략가능: 표시값은 생략시 기본값입)


  

사용 방법

  1)예제 테이블 생성

Create Table GT01 ( Seq int , Name Varchar(20) )

Go

Create Table GT02 ( Seq int , Name Varchar(20) )


  2) 사용 방법 

Insert Into GT01(Seq, Name)

Select Next Value For G_Seq, 'ggachi'


select * from GT01



Insert Into GT02(Seq, Name)

Select Next Value For G_Seq, 'jerry'


select * from GT02


Next Value For 시퀀스명 을 통하여 시퀀스에 설정한 값을 증가 시킬 수 있습니다.


identity 와 비교하면 identity는 한 Table 에만 국한되는 지역변수 속성이라면 

시퀀스는 여러개의 테이블에 사용하는 전역변수 속성이라 생각하면 더 쉽게 이해가 될것 같습니다.


그런데 쿼리 작성시마다 Next Value For 시퀀스명으로 호출하여 증가하니 identity 사용하는것 보다

좀 불편합니다.  그래서 제약조건의 기본값을 사용하여 identity 처럼 사용 해 보겠습니다.


시퀀스  identity 처럼 활용

  GT01, GT02 테이블의 Seq 컬럼을 아래 그림과 같이 기본값을 변경하여 저장합니다.



   실습

Insert Into GT01( Name)

Select  'merry'


select * from GT01


기본값으로 바인딩 후 최초 한번은 1값이 증가하지 않고 +5가 증가 합니다. (버그인듯)

두번째 부터는 정상 작동합니다.



Insert Into GT01( Name)

Select  'test'


select * from GT01


Insert Into GT02( Name)

Select  'test1'


select * from GT02


추가로 현재 시퀀스 값 조회 방법

SELECT cache_size, current_value

FROM sys.sequences

WHERE name = '시퀀스명'


도움이 되셨다면 로그인 없이 가능한

아래 하트♥공감 버튼을 꾹 눌러주세요! 


반응형
댓글