TRUNCATE TABLE
TRUNCATE TABLE#
구문#
truncate ::=#
전제 조건#
SYS 사용자, 테이블이 속한 스키마의 소유자, 테이블에 ALTER 객체 권한을 가진 사용자, 또는 ALTER ANY TABLE 시스템 권한을 가진 사용자만이 테이블 이름을 변경할 수 있다.
설명#
명시된 테이블의 모든 레코드를 삭제하는 구문이다.
user_name#
레코드가 삭제될 테이블의 소유자 이름을 명시한다. 생략하면 Altibase는 현재 세션에 연결된 사용자의 스키마에 속한 것으로 간주한다.
tbl_name#
레코드가 삭제될 테이블 이름을 명시한다.
table_name 에는 큐 테이블 명을 지정하여 ENQUE된 메시지를 한꺼번에 삭제할 수 있다.
TRUNCATE와 DELETE 차이#
TRUNCATE 문을 수행한 경우는 해당 테이블에 할당된 모든 페이지가 데이터베이스에 free page로 반납된다. 따라서 이 페이지들은 다른 테이블에 의해 사용될 수 있다. 그러나 DELETE 문을 수행하여 해당 테이블의 모든 레코드를 삭제한 경우는 free page가 생기더라도 데이터베이스에 다시 반납되지 않고 해당 테이블 내에 유지되기 때문에 메모리 사용량이 줄지 않는다.
TRUNCATE 구문은 DDL구문이므로 이 구문을 성공적으로 수행한 후에는 rollback이 불가능하다.
주의 사항#
레코드의 삭제가 성공적으로 수행되었다면 삭제된 레코드는 복구될 수 없다. 그러나 수행 완료 전에 오류가 발생한 경우나 서버가 죽은 경우엔 롤백이 가능하다.
예제#
<질의> 테이블 employees의 모든 데이터를 삭제하라.
iSQL> TRUNCATE TABLE employee;
Truncate success.