segunda-feira, 8 de março de 2021

TRUNCATE TABLE (Transact-SQL)

 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 aSQL 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.

Nenhum comentário:

Postar um comentário