TRUNCATE TABLE
※해당 테이블의 데이터를 모두 삭제하는 명령어
※ DROP이 테이블의 정의를 삭제하는 것과 다르게 테이블은 남겨놓고 데이터를 삭제해 버린다.
이 명령어를 수행한 이후 테이블은 초기 생성 상태로 남게 된다.
※ DDL문장이므로 ROLLBACK 할 수 없다
[참고]
※ TRUNCATE TABLE과 DELETE는 그 기능은 같으나 구조적인 차이점이 있다.
※ TRUNCATE가DELET보다 작업 속도가 훨씬 빠른데 DELETE은 DML이므로 사용자가 DELETE를 사용
할 경우 해당 데이터에 대한 Undo Data를 만들게 된다. 이 때문에 DELETE의 경우 ROLLBAC이 가능하지만
TRUNCATE는 Undo Data를 만들지 않아서 ROLLBAC이 안 되는 대신 상대적으로 빠른 수행 시간을 보장받게 된.
※ TRUNCAT역시 해당 테이블이 참조되고 있으면 수행할 수 없다.
※ TRUNCAT는 CASCADE가 존재하지 않기 때문에 참조하는 테이블을 찾아서F를 제거해야한.
※ 이때TEST0가TRUNCATE된다고 해서 FK . 위 예제처럼TSET04 테이블을 초기화 하더라도 여전히 TEST0은 수행할 수 없다.
※위처럼 테이블이 제거되거, 제약조건이 제거되야만 가능하다.
[참고] - On Delete Cascade / On Delete Set Null이 있을 경우
※ TRUNCATE는 FK옵션의 영향도 받지 않는다. 아무리 FK를 생성할 때On Delete 옵션을 부여하더라
도 TRUNCATE는 반드시 제약조건이 사라져야만 수행할 수 있다.
[참고2]
※ TUNCAT의 구조적 차이점 중 하나가HWM(High Water Mark)의 이동이다.
※ DELET의 경우 해당 데이터만 삭제할 뿐, HWM이 이동하지 않지만 TRUNCATE는 HWM주소를 맨 처
음 생성시 마크된 세그먼트 헤더 안의 주소로 변경해 버린.
※ HWM초기화 라고도 한다.
'DataBase' 카테고리의 다른 글
데이터베이스 정규화 (0) | 2012.11.06 |
---|---|
[Oracle] 데이터 모델링 (0) | 2012.11.06 |
조인 순서 조정을 위한 힌트(ordered, leading) (0) | 2012.08.21 |
정렬과 머지조인 (0) | 2012.05.08 |
[ERWin] ERWin 7.3 Ver. Comment 로 Logical 만들기 (0) | 2012.02.09 |