🧠 Explicação
O comando TRUNCATE
serve pra limpar completamente uma tabela — mais rápido e leve do que um DELETE
, porque não registra linha a linha no log e não ativa gatilhos (triggers). Ideal pra quando você quer zerar a tabela sem precisar apagar ela nem se preocupar com performance.
Mas atenção: nem todas as versões do DB2 (especialmente z/OS) têm suporte ao TRUNCATE
. Em ambientes LUW (Linux, Unix, Windows), costuma estar disponível.
🔧 Usos mais comuns
-
Resetar tabelas de carga temporária ou staging.
-
Limpar dados de testes entre execuções de batch.
-
Apagar grandes volumes de registros de forma rápida.
-
Zerar tabelas auxiliares em ETL ou processos diários.
🧾 Sintaxe
TRUNCATE TABLE nome_da_tabela
IMMEDIATE;
Ou com opção de reaproveitar espaço (em DB2 LUW):
TRUNCATE TABLE nome_da_tabela
DROP STORAGE
IMMEDIATE;
💻 Exemplo prático
Zerar a tabela LOG_PROCESSAMENTO
antes de uma nova carga:
TRUNCATE TABLE LOG_PROCESSAMENTO
IMMEDIATE;
📌 Regras
-
Não ativa triggers (
BEFORE DELETE
,AFTER DELETE
, etc.). -
Não executa
ON DELETE CASCADE
. -
Não pode ser revertido com
ROLLBACK
— é definitivo! -
Pode exigir que nenhuma outra transação esteja acessando a tabela no momento.
-
Pode exigir privilégios específicos, como
CONTROL
ouDROP
.
💡 Dicas
-
Prefira
TRUNCATE
aDELETE
quando o objetivo for apagar tudo, e você não precisa registrar no log ou fazerWHERE
. -
Se for rodar em produção, tenha cuidado com dependências e bloqueios.
-
Ideal pra rotinas de manutenção ou scripts de limpeza periódica.
✅ Conclusão
TRUNCATE
é um canhão para quando você quer limpar a tabela com agilidade e sem enrolação. Não substitui o DELETE
em todos os casos, mas quando a missão é limpar geral, ele é imbatível. Só use com consciência: não tem volta!