segunda-feira, 28 de maio de 2007

O Comando Truncate

Este comando exclui todas as linhas de uma tabela ou de uma lista de tabelas de forma mais rápida que o comando DELETE tradicional. Apenas o owner de uma tabela pode eliminar seus dados com o comando TRUNCATE.

É recomendado o prudência no uso deste comando, especialmente com a cláusula CASCADE, pois informações relevantes podem ser eliminadas.

Sintaxe:

TRUNCATE [ TABLE ] name [, ...] [ CASCADE | RESTRICT ]

A cláusula CASCADE elimina tabelas referenciadas pela tabela que sofre o TRUNCATE. A cláusula RESTRICT é o padrão e faz o TRUNCATE apenas da tabela explicitamente citada no comando, retornando erro caso haja alguma violação de restrição de integridade. Não é permitido TRUNCATE se a tabela truncada é referenciada por uma tabela filha através de foreign key:

ERROR: cannot truncate a table referenced in a foreign key constraint
SQL state: 0A000
Detail: Table "tstdel3" references "tstdel".
Hint: Truncate table "tstdel3" at the same time, or use TRUNCATE ... CASCADE.

Alguns exemplos:

1 - Exclusão de registros de uma tabela com a cláusula TABLE

TRUNCATE TABLE tstdel;

2 - Exclusão de registros com referência a um esquema

TRUNCATE public.tstdel;

3 - Sintaxe smplificada

TRUNCATE tstdel;

4 - Exclusão de mais de uma tabela ao mesmo tempo

TRUNCATE tstdel, tstdel2;

5 - Exclusão com cláusula CASCADE

TRUNCATE tstdel CASCADE;

Obs.: O comando EXPLAIN não funciona com o comando TRUNCATE, gerando mensagem de erro.

Obs.2: A especificação padrão da linguagem SQL não apresenta o comando TRUNCATE.

Nenhum comentário: