Programming/MS SQL Server
[MS SQL SERVER] SEQUENCE
hoojiv
2021. 10. 28. 18:31
728x90
SEQUENCE 구문은 IDENTITY 구문과 거의 비슷하다.
아래처럼 시퀀스명, 시작값, 증가값을 지정하여 시퀀스를 생성할 수 있다.
CREATE SEQUENCE USERID_COUNTER
AS INT
START WITH 1
INCREMENT BY 2
IDENTITY는 테이블에 입력할 때만 동작하지만 SEQUENCE는 생성해 놓으면 아무때나 SELECT가 가능하다.
SELECT할 때마다 정해진 증가값만큼 계산되어 출력된다.
SELECT NEXT VALUE FOR USERID_COUNTER
테이블 INSERT하는 구문에서도 아래처럼 사용이 가능하다.
CREATE TABLE UserTbl (
USERID INT,
NAME VARCHAR(10),
AGE INT,
ADDR VARCHAR(20)
)
GO
INSERT INTO UserTbl (USERID, NAME, AGE, ADDR)
VALUES (NEXT VALUE FOR dbo.USERID_COUNTER, 'Ken', '20', 'Seattle');
INSERT INTO UserTbl (USERID, NAME, AGE, ADDR)
VALUES (NEXT VALUE FOR dbo.USERID_COUNTER,'Terri', '21', 'Portland');
위와 같은 특징 때문에 IDENTITY와 가장 다른점이 발생하는데 바로 SEQUENCE를 공유할 수 있다는 점이다.
UserTbl 테이블에 입력할 때에도 USERID_COUNTER 시퀀스를 사용하고,
UserTbl2 테이블에 입력할 때에도 동일한 USERID_COUNTER 시퀀스를 사용할 수 있다.
이 때에도 테이블 구별없이 시퀀스는 계속 동작하여 증가한 값을 입력하게 된다.
CREATE TABLE UserTbl2 (
USERID INT DEFAULT(NEXT VALUE FOR dbo.USERID_COUNTER),
NAME VARCHAR(10),
AGE INT,
ADDR VARCHAR(20)
)
GO
INSERT INTO UserTbl2 (NAME, AGE, ADDR)
VALUES ('Terri', '21', 'Portland');
728x90
LIST