기존에 Mysql (mariaDB) 를 사용하셨던 분들이 PostgreSQL 을 사용하시게 되면 Truncate 의 차이점에 대해서 말 해보겠습니다.
실무에서 잘 사용하지는 않지만 Table 의 모든 데이터를 삭제하고 싶을때 Truncate 를 사용합니다.
차이점
- MySQL : Table Truncate 시 기본적으로 Data 및 Sequence 정보도 초기화 된다.
- PostgreSQL : Table Truncate 시 기본적으로 Data 정보만 초기화 된다.
그럼 PostgreSQL 에서 PK 의 값을 1부터 시작하고 싶으면...?
`CONTINUE IDENTITY : Do not change the values of sequences. This is the default.
Truncate 옵션 중에 하나인 CONTINUE IDENTITY 공식문서에서는 해당처럼 Identity (PK값 주로 ID) 값을 변경하지 않는게 기본이라고 설명 되어 있습니다.
그래서, PK 의 Sequence 정보를 초기화 하고 싶으면 RESTART IDENTITY
정보를 추가 하면 됩니다.
TRUNCATE TABLE truncate_test; -- 데이터만 초기화
TRUNCATE TABLE truncate_test RESTART IDENTITY; -- sequence 정보도 초기화
아래는 실제로 테이블을 생성해서 테스트 해본 내용입니다
truncate_test
라는 테이블 생성create table truncate_test ( id bigserial, name varchar(255), created_at timestamp default now() );
- 데이터 추가 & 조회
- sequence 정보 조회
- 그냥 Truncate 실행 시 sequence 정보
RESTART IDENTITY
추가 및 Truncate 실행 시 sequence 정보
공식 문서 : postgreSQL Truncate
반응형
'Database > RDBMS' 카테고리의 다른 글
PostgreSQL Docker 로 실행하기 (with. Podman) (0) | 2023.12.05 |
---|---|
PostgreSQL vs. MariaDB: 오픈 소스 DBMS 비교 (0) | 2023.09.14 |
MariaDB vs PostgreSQL (0) | 2023.02.06 |
PostgreSQL 이란? (0) | 2023.02.06 |
MariaDB 란? (0) | 2023.02.06 |