TRUNCATE TABLE в PostgreSQL: синтаксис и примеры
TRUNCATE TABLE в PostgreSQL удаляет все строки и сохраняет таблицу. Условия WHERE нет. Для выборочного удаления используйте DELETE, для удаления самой таблицы — DROP TABLE.
Пример очистки и отката
Учебный пример создаёт только временную таблицу в текущем сеансе:
CREATE TEMP TABLE demo_truncate (
id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
label text
);
INSERT INTO demo_truncate (label) VALUES ('A'), ('B');
BEGIN;
TRUNCATE TABLE demo_truncate RESTART IDENTITY;
SELECT count(*) FROM demo_truncate; -- 0
ROLLBACK;
SELECT count(*) FROM demo_truncate; -- 2TRUNCATE, DELETE и DROP
| Команда | Что остаётся | Выбор строк |
|---|---|---|
| TRUNCATE | Пустая таблица | Все строки |
| DELETE | Таблица с оставшимися строками | Можно WHERE |
| DROP TABLE | Таблица удаляется | Не применяется |
RESTART IDENTITY, CASCADE и блокировки
По умолчанию последовательности продолжаются. RESTART IDENTITY перезапускает принадлежащие столбцам последовательности. CASCADE включает зависимые по внешним ключам таблицы; используйте его только при намерении очистить их тоже.
Команда требует права TRUNCATE и блокировки ACCESS EXCLUSIVE. Триггеры ON DELETE не вызываются; работают ON TRUNCATE. Незавершённую транзакцию можно откатить, но TRUNCATE не является MVCC-safe для параллельных снимков.
Применение в ETL
Перед перезагрузкой staging-таблицы проверьте готовность входных данных, зависимости и допустимое окно блокировки. Очистка таблицы и подтверждение успешной загрузки — разные этапы процесса.
Разобрать транзакции на практике поможет курс по PostgreSQL. Для регламентов загрузки и обслуживания — настройка и поддержка баз данных.
Документация
- PostgreSQL: типы данных
- PostgreSQL: функции и операции даты/времени
- Функции для работы со строками PostgreSQL
- DBeaver: создание подключения



