O comando TRUNCATE remove todas as linhas de uma tabela instantaneamente.
Limitações
O Hologres oferece suporte a sequências apenas com
CONTINUE IDENTITY, e não comRESTART IDENTITY.O
TRUNCATEfunciona em tabelas padrão, tabelas pai particionadas e tabelas filho particionadas.O
TRUNCATEnão funciona em tabelas externas.
Sintaxe
TRUNCATE [ TABLE ] name [, ... ]
[ CONTINUE IDENTITY ]
A opção CONTINUE IDENTITY preserva o valor atual de qualquer sequência associada. Esse é o comportamento padrão.
-
O
TRUNCATEnão gera binary logs.Comportamento por versão:
Antes da V3.1: O
TRUNCATEé uma instrução de Data Definition Language (DDL). Executá-lo em uma tabela com binary logging ativado não produz erros nem binary logs.-
V3.1 e posteriores: O
TRUNCATEé uma instrução de Data Manipulation Language (DML). Essa mudança reduz a carga no frontend (FE) quando se chama oTRUNCATEfrequentemente. A execução desse comando em uma tabela com binary logging ativado retorna um erro. Para resolver, adote uma das seguintes abordagens no nível da sessão:Opção 1 (recomendada): Execute o comando como DDL definindo
SET hg_enable_truncate_as_dml = off.Opção 2: Desative o binary logging definindo
SET hg_experimental_generate_binlog = off. Essa configuração afeta todas as tabelas e operações DML. Para mais detalhes, consulte Desativar binary logging para operações DML em uma tabela.
Exemplos
Truncar uma tabela regular
CREATE TABLE event (
id INT,
name text,
tag text
);
INSERT INTO event (id, name, tag) VALUES (23, 'buy', 'num');
-- Verify rows exist before truncation
SELECT * FROM event;
TRUNCATE TABLE event;
Truncar uma tabela com coluna de sequência
O CONTINUE IDENTITY é o padrão. O contador da sequência não é redefinido após o truncamento.
CREATE TABLE event_1 (
id serial,
name text,
tag text
);
INSERT INTO event_1 (name, tag) VALUES ('buy', 'num');
-- Verify rows exist before truncation
SELECT * FROM event_1;
# CONTINUE IDENTITY is the default.
TRUNCATE TABLE event_1 CONTINUE IDENTITY;