postgresql - truncate(테이블 데이터 모두 삭제)

배세훈·2021년 8월 9일
0

DB

목록 보기
8/19

truncate

truncate 명령어는 테이블의 모든 데이터를 삭제하는 명령어입니다.

truncate와 delete의 차이점

  • delete의 경우는 행이 삭제 될 때마다 많은 자원이 소모되고 트리거가 걸려있다면 행이 삭제될 때마다 실행된다.
    이전에 할당되었던 영역은 삭제되어 빈 테이블이나 클러스터에 그대로 남아있게 된다. -> 데이터 잔여물이 남게된다.

  • truncate는 비교적 빠르게 데이터 삭제가 가능하며 해당 삭제에 대해서 어떤 롤백 정보도 만들지 않고 바로 커밋한다. 즉, 롤백이 불가능하다는 뜻
    또한 truncate는 트리거나 무결성 제약에 영향을 주지 않는다.
    delete와 다르게 행을 삭제 할 때마다 트리거가 실행되지 않는다.

truncate 사용방법

-- test_table 테이블에 자동적으로 시퀀스 (자동증가 값)를 재시작한다.
truncate table test_table restart identity;

-- restart 와는 달리 test_table의 시퀀스 값은 리셋하지 않고 데이터만 삭제한다.
truncate table test_table continue identity;

-- test_table의 데이터를 모두 삭제하면 만약 test_table에 연결된 데이터들이 있다면 모두 삭제한다. (외래키로 연결된 데이터들)
truncate table test_table cascade;

-- test_table에 연결된 데이터가 하나라도 있다면 데이터를 삭젷지 않는다.
-- cascade와는 상반되는 역할을 수행합니다.
truncate table test_table restrict;
profile
성장형 인간

0개의 댓글