Database ( DB )/Database

[MSSQL] IDENTITY 값 초기화 하는 방법

노루아부지 2021. 8. 8. 17:25

아래와 같이 IDENTITY를 사용하여 테이블을 생성했다면 seq 컬럼은 자동 증가 값을 가지게 됩니다.

 

CREATE TABLE [dbo].[tb_user] (
  [seq] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
  [user_name] [varchar] (70) NOT NULL,
  [email] [varchar] (70) NOT NULL
)

 

개발을 하다보면 이 테이블에 값을 입력하는 테스트를 진행하게 되는데요.

테스트 후에 데이터를 모두 삭제해도 seq 컬럼은 초기화되지 않습니다.

 

이때 IDENTITY로 선언된 seq 값을 초기화하기 위해서는 아래와 같이 명령어를 실행하면 됩니다.

이 명령어를 실행하면 IDENTITY 값이 1로 초기화 됩니다.

-- IDENTITY 값 초기화하기
-- 사용법 ) DBCC CHECKIDENT([테이블명], reseed, [초기화 시킬 값])

DBCC CHECKIDENT(tb_user, reseed, 0)

 

위 명령어를 실행하면 PK 중복 에러가 발생할 수 있습니다.

예를 들어, 기존에 USER 테이블에 값이 있었고, 테스트 한 값만 지운 상태에서 IDENTITY 값을 초기화하면

이미 USER 테이블에는 seq가 1인 값이 있는데, IDENTITY에 의해서 들어가야 할 값이 1일 경우에 에러가 발생합니다. 이때 아래 명령어를 사용하면 IDENTITY의 값을 현재 USER 테이블의 컬럼값과 같게 재설정합니다.

DBCC CHECKIDENT(tb_user, reseed)

 

728x90
loading