테이블의 구조는 남기고 모든 데이터를 지워야 할 경우 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의 사용보다는 상황에 맞게 사용하자.
'DBMS > SQL Server' 카테고리의 다른 글
[SQL Server] 한 테이블에 생성할 수 있는 인덱스의 최대 개수 (0) | 2013.04.15 |
---|---|
[SQL Server] GO 명령의 깜찍한 기능 (0) | 2013.04.09 |
[SQL Server] NULL의 크기 (0) | 2013.04.05 |
[SQL Server] 유일한 값을 찾는 다양한 방법 (0) | 2013.04.01 |
[SQL Server] 랜덤 출력 NEWID 함수 (0) | 2013.03.30 |