본문 바로가기

DBMS/SQL Server

[SQL Server] DELETE, TRUNCATE의 IDENTITY 초기화 여부

 

테이블의 구조는 남기고 모든 데이터를 지워야 할 경우 DELETE와 TRUNCATE를 사용할 수 있다.

이 때 테이블에 IDENTITY 속성이 있고 데이터는 지우되 다시 데이터를 입력할 때

이전에 사용하던 IDENTITY 값을 이어서 사용하고 싶으면 어떤 것을 사용해야할까?

 

 CREATE TABLE TEST_1 (

    NUM INT IDENTITY (1,1)

  , NAME CHAR(6)

 )

 GO

 

 CREATE TABLE TEST_2 (

    NUM INT IDENTITY (1,1)

  , NAME CHAR(6)

 )

 GO

 

 INSERT INTO TEST_1 VALUES ('아이유'), ('배수지'), ('강민경')

 INSERT INTO TEST_2 VALUES ('아이유'), ('배수지'), ('강민경')

 GO

 

 -- IDENTITY 값 확인 (왼쪽이 DELETE, 오른쪽이 TRUNCATE)

 SELECT * FROM TEST_1

 SELECT * FROM TEST_2

 GO

        

  

 -- TEST_1 테이블은 DELETE, TEST_2 테이블은 TRUNCATE

 DELETE TEST_1

 TRUNCATE TABLE TEST_2

 GO

 

 -- 다시 데이터 삽입

 INSERT INTO TEST_1 VALUES ('아이유'), ('배수지'), ('강민경')

 INSERT INTO TEST_2 VALUES ('아이유'), ('배수지'), ('강민경')

 GO

 

 -- IDENTITY 값 확인 (왼쪽이 DELETE, 오른쪽이 TRUNCATE)

 SELECT * FROM TEST_1

 SELECT * FROM TEST_2

 GO

       

 

테스트 결과 DELETE는 IDNTITY 속성이 초기화 되지 않았음을 알 수 있고,

TRUNCATE는 초기화 되었음을 알 수 있다.

속도가 빠르다고 무조건 TRUNCATE의 사용보다는 상황에 맞게 사용하자.