MSSQL 자동증가 열(컬럼) 추가 방법 (IDENTITY)

MSSQL 자동증가 열(컬럼) 추가 방법 (IDENTITY)

MS SQL에서는 행을 식별할 수 있는 고유한 일련번호를 자동으로 부여할 수 있게 컬럼(열) 속성으로 IDENTITY를 제공하고 있습니다. IDENTITY 속성을 많이 사용하지는 않지만 간혹 유용할 때가 있습니다. 저 같은 경우는 테이블에 PK(primary key)로 설정할만한 컬럼(열)이 없는 경우 IDENTITY 속성으로 PK를 설정합니다. 그리고 로그 테이블에서도 유용하게 사용하고 있습니다.    

그럼 간단한 예제를 통해서 열(컬럼) 속성인 IDENTITY 대해서 알아보죠.

포스트 기준

– Microsoft SQL Server 2019

– SSMS 18.10

구문

구문 (syntaxsql)

IDENTITY [ (초기 값, 증분 값) ]

☆ 초기 값, 증분 값 둘 다 생략하면 초기 값 1, 증분 값 1이 적용됩니다.

사용 예제

1. 예제 1) 초기 값, 증분 값 생략한 경우

CREATE TABLE BS_DEMO_4 (
     COL_ID	INT IDENTITY	NOT NULL	PRIMARY KEY,	-- IDENTITY 초기 값, 증분 값 생략
     COL_NM	NVARCHAR(50)	NULL
)
     
INSERT INTO BS_DEMO_4 (COL_NM) VALUES ('COL_1')
INSERT INTO BS_DEMO_4 (COL_NM) VALUES ('COL_2')
INSERT INTO BS_DEMO_4 (COL_NM) VALUES ('COL_3')
INSERT INTO BS_DEMO_4 (COL_NM) VALUES ('COL_4')
INSERT INTO BS_DEMO_4 (COL_NM) VALUES ('COL_5')
     
SELECT * FROM BS_DEMO_4
초기 값, 증분 값 생략한 경우 예시 화면입니다.


2. 예제 2) 초기 값, 증분 값 설정한 경우

CREATE TABLE BS_DEMO_5 (
     COL_ID	INT IDENTITY(100, 10)	NOT NULL	PRIMARY KEY,	-- IDENTITY 초기 값, 증분 값 추가
     COL_NM	NVARCHAR(50)		NULL
)
     
INSERT INTO BS_DEMO_5 (COL_NM) VALUES ('COL_1')
INSERT INTO BS_DEMO_5 (COL_NM) VALUES ('COL_2')
INSERT INTO BS_DEMO_5 (COL_NM) VALUES ('COL_3')
INSERT INTO BS_DEMO_5 (COL_NM) VALUES ('COL_4')
INSERT INTO BS_DEMO_5 (COL_NM) VALUES ('COL_5')
     
SELECT * FROM BS_DEMO_5
초기 값, 증분 값 설정한 경우 예시 화면입니다.


3. 예제 3) 초기 값, 증분 값 확인 방법

▶ IDENT_SEED: 초기 값 확인, IDENT_INCR : 증분 값 확인

SELECT IDENT_SEED('BS_DEMO_4') AS SEED_1	-- 초기 값 확인
     , IDENT_INCR('BS_DEMO_4') AS INCR_1	-- 증분 값 확인
     , IDENT_SEED('BS_DEMO_5') AS SEED_2	-- 초기 값 확인
     , IDENT_INCR('BS_DEMO_5') AS INCR_2	-- 증분 값 확인
초기 값, 증분 값 확인 방법 예시 화면입니다.


4. 예제 4) 데이터를 삭제한 경우

DELETE FROM BS_DEMO_4 WHERE COL_ID = 3
INSERT INTO BS_DEMO_4 (COL_NM) VALUES ('COL_6')
INSERT INTO BS_DEMO_4 (COL_NM) VALUES ('COL_7')
     
SELECT * FROM BS_DEMO_4
데이터를 삭제한 경우 예시 화면입니다.


5. 예제 5) ID 열(컬럼)을 저장하는 경우

☆ 기본적으로 ID 열(컬럼) 조작 불가능

INSERT INTO BS_DEMO_4 (COL_ID, COL_NM) VALUES (3, 'COL_3')
ID 열(컬럼)을 저장하는 경우 예시 화면입니다.


6. 예제 6) ID 열(컬럼)을 조작 가능하게 설정하는 방법

▶ ID 열(컬럼)을 굳이 변경하고자 할 때 설정 값을 변경

SET IDENTITY_INSERT BS_DEMO_4 ON	-- ID열 삽입 가능하게 설정
     
INSERT INTO BS_DEMO_4 (COL_ID, COL_NM) VALUES (3, 'COL_3')
     
SET IDENTITY_INSERT BS_DEMO_4 OFF	-- 원상 복구
     
SELECT * FROM BS_DEMO_4
ID 열(컬럼)을 조작 가능하게 설정하는 방법 예시 화면입니다.


7. 예제 7) 초기 값 세팅

▶ 테스트 완료 후 초기 값 세팅이 필요할 때가 있습니다.

▶ 구문 : DBCC CHECKIDENT(‘[테이블명]’, RESEED, 초기값)

☆ 데이터를 모두 삭제해도 ID 값은 삭제가 되지 않습니다.

DELETE FROM BS_DEMO_4
     
-- 원하는 값으로 초기값 세팅
DBCC CHECKIDENT(BS_DEMO_4, RESEED, 0)
     
INSERT INTO BS_DEMO_4 (COL_NM) VALUES ('COL_1')
     
SELECT * FROM BS_DEMO_4
초기 값 세팅 예시 화면입니다.


이 글이 도움이 되셨다면 공유를 부탁드립니다. 다음 글에서 뵙겠습니다!

위로 스크롤