MS-SQL 2017로 업그레이드 후 알게된 편리한 기능 중에 하나인 시퀀스에 대해서 포스팅 하고자 합니다.
행복한소식까치
지원 버전 : 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 처럼 사용 해 보겠습니다.
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 = '시퀀스명'
도움이 되셨다면 로그인 없이 가능한
아래 하트♥공감 버튼을 꾹 눌러주세요!
MSSQL - Data 조회(Select)/수정(Update)/삭제(Delete) (0) | 2019.11.14 |
---|---|
MSSQL - Table 생성/수정/삭제 (0) | 2019.11.01 |
MSSQL 기본 명령어 정리 (0) | 2018.08.24 |
MSSQL 마이그레이션 (MSSQL2005 -> MSSQL2017) :사용자계정 복원 (0) | 2018.07.02 |
MSSQL 연결된 서버 사용하기 (0) | 2017.11.17 |
Blog is powered by kakao / Designed by 미스터짱