TRUNCATE DATABASE 2013. 9. 25. 15:03

TRUNCATE

설명

TRUNCATE 문은 명시된 테이블의 모든 레코드들을 삭제한다.

내부적으로 테이블에 정의된 모든 인덱스와 제약 조건을 먼저 삭제한 후 레코드를 삭제하기 때문에, WHERE 조건이 없는 DELETE FROM table_name 문을 사용하는 것보다 빠르다. TRUNCATE 문을 사용해서 삭제하면 ON DELETE 트리거가 활성화되지 않는다.

대상 테이블에 PRIMARY KEY 제약 조건이 정의되어 있고, 이 PRIMARY KEY를 하나 이상의 FOREIGN KEY가 참조하고 있는 경우에는 FOREIGN KEY ACTION을 따른다. FOREIGN KEY의 ON DELETE 액션이 RESTRICT나 NO ACTION이면 TRUNCATE문은 에러를 반환하고, CASCADE이면 FOREIGN KEY도 함께 삭제한다. TRUNCATE 문은 해당 테이블의 AUTO INCREMENT 컬럼을 초기화하여, 다시 데이터가 입력되면 AUTO INCREMENT 컬럼의 초기값부터 생성된다.

구문

TRUNCATE [ TABLE ] <table_name>

  • table_name : 삭제할 데이터가 포함되어 있는 테이블의 이름을 지정한다.
예제

CREATE TABLE a_tbl(A INT AUTO_INCREMENT(3,10) PRIMARY KEY);

INSERT INTO a_tbl VALUES (NULL),(NULL),(NULL);

SELECT * FROM a_tbl;

 

=============

            3

            13

            23

 

--AUTO_INCREMENT column value increases from the initial value after truncating the table

TRUNCATE TABLE a_tbl;

INSERT INTO a_tbl VALUES (NULL);

SELECT * FROM a_tbl;

 

=============

            3