TRUNCATE
Exclui todas as linhas de uma tabela sem fazer uma varredura de lista: esta operação é uma alternativa mais rápida a uma operação DELETE não qualificada. Para executar um comando TRUNCATE, é necessário ter a permissão TRUNCATE TABLE e ser o proprietário da tabela ou um superusuário. Para conceder permissões para truncar uma tabela, use o comando GRANT.
TRUNCATE é muito mais eficiente do que DELETE e não requer VACUUM nem ANALYZE. No entanto, esteja ciente de que TRUNCATE confirma a transação em que é executado.
Sintaxe
TRUNCATE [ TABLE ] table_name
O comando também funciona em uma visão materializada.
TRUNCATE materialized_view_name
Parâmetros
- TABLE
-
Palavra-chave opcional.
- table_name
-
Uma tabela temporária ou persistente. Somente o proprietário da tabela ou um superusuário pode truncá-la.
Você pode truncar qualquer tabela, incluindo tabelas com referência em limitações de chave externa.
Você não precisa limpar uma tabela depois de truncá-la.
- materialized_view_name
-
Uma visão materializada.
Você pode truncar uma visão materializada que é usada para Ingestão de streaming para uma visão materializada.
Observações de uso
O comando TRUNCATE confirma a transação em que é executado. Portanto, você não pode reverter uma operação TRUNCATE, e um comando TRUNCATE pode confirmar outras operações quando confirma a si mesmo.
Exemplos
Use o comando TRUNCATE para excluir todas as linhas da tabela CATEGORY:
truncate category;
Tente reverter uma operação TRUNCATE:
begin; truncate date; rollback; select count(*) from date; count ------- 0 (1 row)
A tabela DATE permanece vazia após o comando ROLLBACK porque o comando TRUNCATE foi confirmado automaticamente.
O exemplo a seguir usa o comando TRUNCATE para excluir todas as linhas de uma visão materializada.
truncate my_materialized_view;
Ele exclui todos os registros da visão materializada, deixando a visão materializada e o respectivo esquema intactos. Na consulta, o nome da visão materializada é apenas um exemplo.