TRUNCATE (SQL)
보이기
TRUNCATE 또는 TRUNCATE TABLE문은 테이블에서 모든 행을 삭제하는 데이터 정의 언어(DDL)이다. 데이터베이스가 가지고 있는 무결성을 유지하는 메커니즘을 생략하여 빠른 제거를 실현하고 있는 경우가 많다. 삭제할 행 각각을 기록하는 트랜잭션 로그의 출력을 방지함으로써 효율적으로 모든 행을 삭제할 수 있다.
TRUNCATE와 DELETE
[편집]‘TRUNCATE TABLE 테이블명’은 ‘DELETE FROM 테이블명’과 거의 동일하지만 다음과 같은 점에서 다르다.
- WHERE 절을 지정할 수 없다. 모든 행은 일괄 삭제된다.
- 대상 테이블 단독 잠금을 얻을 수 있다.
- 외래 키에서 참조되는 테이블에서 실행할 수 없다. 외래 키의 무결성을 확인하지 않기 때문이다.
- Oracle Database와 MySQL의 일부 스토리지 엔진은 TRUNCATE 후 자동으로 커밋을 한다. TRUNCATE의 삭제는 롤백할 수 없다.
- PostgreSQL 처럼, TRUNCATE를 트랜잭션 내에서 실행할 수 있으며, 롤백이 가능한 데이터베이스도 존재한다. 대상 테이블을 "이전 버전"으로 트랜잭션이 완료될 때까지 유지하는 것으로 실현되고 있다.
- Microsoft SQL Server에서는 TRUNCATE TABLE 문은 복제 및 로그 전달 대상이 되고 있는 테이블에 대해 실행할 수 없다. 모두 원격 데이터베이스의 일관성을 유지하기 위해 트랜잭션 로그를 이용하기 때문이다.[1]
구문
[편집]TRUNCATE [TABLE] 테이블명 [, 테이블명]
많은 데이터베이스 제품에서 TABLE
은 생략 가능하다.
각주
[편집]이 글은 소프트웨어에 관한 토막글입니다. 여러분의 지식으로 알차게 문서를 완성해 갑시다. |