본문 바로가기
프로그래밍/DB

SQL Server에서 SET IDENTITY_INSERT 사용하기

by @GodWin 2024. 12. 6.

-



-
SET IDENTITY_INSERT는 SQL Server에서 중요한 역할을 하는 명령어입니다. 주로 IDENTITY 컬럼을 가진 테이블에 대해 수동으로 값을 삽입할 수 있도록 도와줍니다. 그럼, IDENTITY_INSERT가 무엇인지, 어떻게 사용되는지 알아볼게요.

 

IDENTITY 컬럼이란?

먼저, IDENTITY 컬럼에 대해 간단히 설명하자면, 자동으로 값을 증가시키는 컬럼입니다. 보통 **기본키(primary key)**로 많이 사용되며, 데이터가 삽입될 때마다 자동으로 증가하는 숫자가 부여됩니다. 그런데 가끔은 이 IDENTITY 컬럼에 수동으로 값을 삽입하고 싶을 때가 있습니다.
 

SET IDENTITY_INSERT란?

SET IDENTITY_INSERT 명령어는 IDENTITY 컬럼에 명시적으로 값을 삽입할 수 있게 해주는 기능입니다. 기본적으로 IDENTITY 컬럼은 자동으로 증가하지만, 이 명령어를 사용하면 사용자가 원하는 값을 넣을 수 있습니다.
 

SET IDENTITY_INSERT 사용법

SET IDENTITY_INSERT는 두 가지 모드로 사용할 수 있습니다. 바로 ONOFF입니다.
 

  1. SET IDENTITY_INSERT 테이블명 ON
    • 이 명령어는 지정한 테이블에 대해 IDENTITY 컬럼에 명시적으로 값을 삽입할 수 있게 허용합니다.
    • 예를 들어, 특정 ID 값을 수동으로 넣어야 할 때 유용합니다.
  2. SET IDENTITY_INSERT 테이블명 OFF
    • 이 명령어는 IDENTITY_INSERT 설정을 해제하여 다시 자동 증가 기능을 활성화합니다.
    • ON 상태에서 값을 삽입한 후에는 반드시 OFF로 설정해야 오류를 방지할 수 있습니다.

 
 IDENTITY_INSERT ON 상태에서 값 삽입하기

-- IDENTITY_INSERT를 ON으로 설정
SET IDENTITY_INSERT 테이블명 ON;

-- IDENTITY 컬럼에 명시적으로 값 삽입
INSERT INTO 테이블명 (ID, Name)
VALUES (10, 'John Doe');  -- IDENTITY 컬럼(ID)에 명시적으로 10 삽입

-- IDENTITY_INSERT를 OFF로 설정
SET IDENTITY_INSERT 테이블명 OFF;

위 예시처럼, IDENTITY_INSERT를 ON으로 설정한 뒤, 원하는 값을 IDENTITY 컬럼에 직접 삽입할 수 있습니다. 삽입이 끝난 후에는 OFF로 설정해줘야 자동 증가 기능이 다시 정상적으로 작동합니다.

 

  • 한 번에 하나의 테이블만 IDENTITY_INSERT를 ON 상태로 설정할 수 있습니다.
  • 반드시 값을 삽입한 후에는 OFF로 설정해야 합니다. 그렇지 않으면 후속 쿼리에서 오류가 발생할 수 있습니다.
  • 이 기능은 SQL Server에서만 지원되며, MySQL이나 PostgreSQL 등 다른 DBMS에서는 사용할 수 없습니다.

 

언제 SET IDENTITY_INSERT를 사용할까?

 
SET IDENTITY_INSERT는 데이터 마이그레이션이나 복원 작업을 할 때 유용합니다. 예를 들어, 백업에서 복원한 데이터나 다른 시스템에서 가져온 데이터를 삽입할 때, 기존의 ID 값을 유지하고자 할 때 사용됩니다.

오늘은  IDENTITY_INSERT가 무엇인지, 어떻게 사용되는지 알아보았습니다.
오늘도 즐거운 하루 되시길 바라겠습니다.