🧠 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 ou DROP.

💡 Dicas

  • Prefira TRUNCATE a DELETE quando o objetivo for apagar tudo, e você não precisa registrar no log ou fazer WHERE.

  • 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!