Remove todas as linhas de uma tabela ou partições especificadas de uma tabela sem registrar as exclusões de linha individual. TRUNCATE TABLE é semelhante à instrução DELETE sem nenhuma cláusula WHERE; entretanto, TRUNCATE TABLE é mais rápida e utiliza menos recursos de sistema e log de transações.
-- Syntax for SQL Server and Azure SQL Database
TRUNCATE TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name } [ WITH ( PARTITIONS ( { <partition_number_expression> | <range> } [ , ...n ] ) ) ] [ ; ]
Argumentos
database_name
É o nome do banco de dados.
schema_name
É o nome do esquema ao qual a tabela pertence.
table_name
É o nome da tabela a ser truncada ou da qual todas as linhas são removidas. table_name deve ser um literal. table_name não pode ser a função OBJECT_ID() nem uma variável.
WITH ( PARTITIONS ( { <partition_number_expression> | <range> } [ , ...n ] ) )
Aplica-se a: SQL Server (SQL Server 2016 (13.x) até a versão atual)
Especifica as partições para truncar ou das quais todas as linhas são removidas. Se a tabela não for particionada, o argumento WITH PARTITIONS
ON PARTITIONS gerará um erro. Se a cláusula WITH PARTITIONS
não for fornecida, a tabela inteira será truncada.
<partition_number_expression> pode ser especificado das seguintes maneiras:
Forneça o número de uma partição, por exemplo:
WITH (PARTITIONS (2))
Forneça os números de várias partições individuais separados por vírgulas, por exemplo:
WITH (PARTITIONS (1, 5))
Forneça os intervalos e as partições individuais, por exemplo:
WITH (PARTITIONS (2, 4, 6 TO 8))
<range> pode ser especificado como números de partições separados pela palavra TO, por exemplo:
WITH (PARTITIONS (6 TO 8))
Para truncar uma tabela particionada, a tabela e os índices deverão estar alinhados (particionados na mesma função de partição).
Restrições
Você não pode usar TRUNCATE TABLE
em tabelas que:
São referenciadas por uma restrição FOREIGN KEY. É possível truncar uma tabela que tenha uma chave estrangeira que referencie a ela mesma.
Participam de uma exibição indexada.
São publicadas com replicação transacional ou replicação de mesclagem.
São temporais com controle de versão do sistema.
São referenciadas por uma restrição EDGE.
Permissões
A permissão mínima necessária é ALTER
em table_name. As permissões TRUNCATE TABLE
são padronizadas para o proprietário da tabela, os membros da função de servidor fixa sysadmin
e as funções de banco de dados fixas db_owner
e db_ddladmin
, e não podem ser transferidas. Entretanto, você pode incorporar a instrução TRUNCATE TABLE
dentro de um módulo, como um procedimento armazenado, e conceder permissões adequadas ao módulo por meio da cláusula EXECUTE AS
.