DB2 - Exemplos simples - TRUNCATE TABLE



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

DB2 - Exemplos simples - TRUNCATE TABLE

Deletes the data inside a table, but not the table itself
Exclui os dados de uma tabela, mas não a própria tabela

The TRUNCATE statement deletes all of the rows from a table.
A instrução TRUNCATE exclui todas as linhas de uma tabela.

Invocation - Invocação

This statement can be embedded in an application program or issued through the use of dynamic SQL statements.
It is an executable statement that can be dynamically prepared only if DYNAMICRULES run behavior is in effect for the package (SQLSTATE 42509).

Essa instrução pode ser incorporada em um programa de aplicativo ou emitida por meio do uso de instruções SQL dinâmicas.
É uma instrução executável que pode ser preparada dinamicamente apenas se o comportamento de execução DYNAMICRULES estiver em vigor para o pacote (SQLSTATE 42509).

Authorization - Autorização

The privileges held by the authorization ID of the statement must include at least one of the following for the table, and all subtables of a table hierarchy:
Os privilégios detidos pelo ID de autorização da instrução devem incluir pelo menos um dos seguintes para a tabela e todas as subtabelas de uma hierarquia de tabela:

  • DELETE privilege on the table to be truncated
    Privilégio DELETE na tabela a ser truncada

  • CONTROL privilege on the table to be truncated
    Privilégio de CONTROLE na tabela a ser truncado

  • DATAACCESS authority
    Autoridade DATAACCESS

To ignore any DELETE triggers that are defined on the table, the privileges held by the authorization ID of the statement must include at least one of the following for the table, and all subtables of a table hierarchy:
Para ignorar quaisquer gatilhos DELETE definidos na tabela, os privilégios detidos pelo ID de autorização da instrução devem incluir pelo menos um dos seguintes para a tabela e todas as subtabelas de uma hierarquia de tabela:

  • ALTER privilege on the table
    Privilégio ALTER na tabela

  • CONTROL privilege on the table
    Privilégio de CONTROLE na tabela

  • DBADM authority
    Autoridade DBADM

To truncate a table that is protected by a security policy, the privileges held by the authorization ID of the statement must include at least one of the following:
Para truncar uma tabela protegida por uma política de segurança, os privilégios detidos pelo ID de autorização da instrução devem incluir pelo menos um dos seguintes:

  • CONTROL privilege on the table
    privilégio de CONTROLE na tabela

  • DBADM authority
    Autoridade DBADM

Syntax - Sintaxe

             .-TABLE-.              .-DROP STORAGE--.   
>>-TRUNCATE--+-------+--table-name--+---------------+----------->
                                    '-REUSE STORAGE-'   

   .-IGNORE DELETE TRIGGERS--------.   
>--+-------------------------------+---------------------------->
   '-RESTRICT WHEN DELETE TRIGGERS-'   

   .-CONTINUE IDENTITY-.              
>--+-------------------+--IMMEDIATE----------------------------><

Description - Descrição

table-name
Identifies the table to be truncated.
The name must identify a table that exists at the current server (SQLSTATE 42704), but it cannot be a catalog table (SQLSTATE 42832), a nickname (SQLSTATE 42809), a view, a subtable, a staging table, a system-maintained materialized query table, or a range-clustered table (SQLSTATE 42807).
If table-name is the root table of a table hierarchy, all tables in the table hierarchy will be truncated.

Identifica a tabela a ser truncada.
O nome deve identificar uma tabela que existe no servidor atual (SQLSTATE 42704), mas não pode ser uma tabela de catálogo (SQLSTATE 42832), um apelido (SQLSTATE 42809), uma visualização, uma subtabela, uma tabela temporária, um sistema mantido tabela de consulta materializada ou uma tabela agrupada por intervalo (SQLSTATE 42807).
Se table-name for a tabela raiz de uma hierarquia de tabelas, todas as tabelas na hierarquia de tabelas serão truncadas.

DROP STORAGE or REUSE STORAGE
Specifies whether to drop or reuse the existing storage that is allocated for the table.
The default is DROP STORAGE.
Especifica se deve descartar ou reutilizar o armazenamento existente que está alocado para a tabela.
O padrão é DROP STORAGE.
DROP STORAGE
All storage allocated for the table is released and made available.
If this option is specified (implicitly or explicitly), an on-line backup would be blocked.
Todo o armazenamento alocado para a mesa é liberado e disponibilizado.
Se esta opção for especificada (implícita ou explicitamente), um backup on-line será bloqueado.

REUSE STORAGE
All storage allocated for the table will continue to be allocated for the table, but the storage will be considered empty.
This option is only applicable to tables in DMS table spaces and is ignored otherwise.
Todo o armazenamento alocado para a mesa continuará a ser alocado para a mesa, mas o armazenamento será considerado vazio.
Esta opção é aplicável apenas a tabelas em espaços de tabela DMS e, caso contrário, será ignorada.
IGNORE DELETE TRIGGERS or RESTRICT WHEN DELETE TRIGGERS
Specifies what to do when delete triggers are defined on the table.
The default is IGNORE DELETE TRIGGERS.
Especifica o que fazer quando os gatilhos de exclusão são definidos na tabela.
O padrão é IGNORE DELETE TRIGGERS.
IGNORE DELETE TRIGGERS
Any delete triggers that are defined for the table are not activated by the truncation operation.
Quaisquer gatilhos de exclusão definidos para a tabela não são ativados pela operação de truncamento.

RESTRICT WHEN DELETE TRIGGERS
An error is returned if delete triggers are defined on the table (SQLSTATE 428GJ).
Um erro será retornado se os gatilhos de exclusão forem definidos na tabela (SQLSTATE 428GJ).
CONTINUE IDENTITY
If an identity column exists for the table, the next identity column value generated continues with the next value that would have been generated if the TRUNCATE statement had not been executed.
Se houver uma coluna de identidade para a tabela, o próximo valor de coluna de identidade gerado continuará com o próximo valor que teria sido gerado se a instrução TRUNCATE não tivesse sido executada.

IMMEDIATE
Specifies that the truncate operation is processed immediately and cannot be undone.
The statement must be the first statement in a transaction (SQLSTATE 25001).
The truncated table is immediately available for use in the same unit of work.
Although a ROLLBACK statement is allowed to execute after a TRUNCATE statement, the truncate operation is not undone, and the table remains in a truncated state.
For example, if another data change operation is done on the table after the TRUNCATE IMMEDIATE statement and then the ROLLBACK statement is executed, the truncate operation will not be undone, but all other data change operations are undone.

Especifica que a operação de truncamento é processada imediatamente e não pode ser desfeita.
A instrução deve ser a primeira instrução em uma transação (SQLSTATE 25001).
A tabela truncada está imediatamente disponível para uso na mesma unidade de trabalho.
Embora uma instrução ROLLBACK possa ser executada após uma instrução TRUNCATE, a operação de truncamento não é desfeita e a tabela permanece em um estado truncado.
Por exemplo, se outra operação de alteração de dados for realizada na tabela após a instrução TRUNCATE IMMEDIATE e, em seguida, a instrução ROLLBACK for executada, a operação de truncamento não será desfeita, mas todas as outras operações de alteração de dados serão desfeitas.

Rules - Regras

  • Referential Integrity: The table, and all tables in a table hierarchy, must not be a parent table in an enforced referential constraint (SQLSTATE 428GJ).
    A self-referencing RI constraint is permitted.

    Integridade referencial: a tabela e todas as tabelas em uma hierarquia de tabelas não devem ser uma tabela pai em uma restrição referencial imposta (SQLSTATE 428GJ).
    Uma restrição de RI de autorreferência é permitida.

  • Partitioned tables: The table must not be in set integrity pending state due to being altered to attach a data partition (SQLSTATE 55019).
    The table needs to be checked for integrity prior to executing the TRUNCATE statement.
    With DB2® Version 9.7 Fix Pack 1 and later releases, the table must not have any logically detached partitions (SQLSTATE 55057).
    The asynchronous partition detach task must complete prior to executing the TRUNCATE statement.

    Tabelas particionadas: A tabela não deve estar no estado pendente de integridade definida devido a ter sido alterada para anexar uma partição de dados (SQLSTATE 55019).
    A integridade da tabela precisa ser verificada antes de executar a instrução TRUNCATE.
    Com o DB2® Versão 9.7 Fix Pack 1 e liberações posteriores, a tabela não deve ter nenhuma partição logicamente desconectada (SQLSTATE 55057).
    A tarefa de desanexação de partição assíncrona deve ser concluída antes de executar a instrução TRUNCATE.

  • Exclusive Access: No other session can have a cursor open on the table, or a lock held on the table (SQLSTATE 25001).
    Acesso exclusivo: Nenhuma outra sessão pode ter um cursor aberto na mesa, ou um bloqueio mantido na mesa (SQLSTATE 25001).

  • WITH HOLD cursors: The current session cannot have a WITH HOLD cursor open on the table (SQLSTATE 25001).
    Cursores WITH HOLD: A sessão atual não pode ter um cursor WITH HOLD aberto na tabela (SQLSTATE 25001).

Notes - Notas

  • Table statistics: The statistics for the table are not changed by the TRUNCATE statement.
    Estatísticas da tabela: As estatísticas da tabela não são alteradas pela instrução TRUNCATE.

  • Number of rows deleted: SQLERRD(3) in the SQLCA is set to -1 for the truncate operation.
    The number of rows that were deleted from the table is not returned.
    Número de linhas excluídas: SQLERRD (3) no SQLCA é definido como -1 para a operação de truncamento.
    O número de linhas que foram excluídas da tabela não é retornado.

Example 1: Empty an unused inventory table regardless of any existing triggers and return its allocated space.
Exemplo 1: Esvazie uma tabela de inventário não utilizada, independentemente de quaisquer gatilhos existentes, e retorne seu espaço alocado.

    TRUNCATE TABLE INVENTORY
             IGNORE DELETE TRIGGERS
             DROP STORAGE
             IMMEDIATE

Example 2: Empty an unused inventory table regardless of any existing delete triggers but preserve its allocated space for later reuse.
Exemplo 2: Esvazie uma tabela de inventário não utilizada, independentemente de quaisquer gatilhos de exclusão existentes, mas preserve seu espaço alocado para reutilização posterior.

    TRUNCATE TABLE INVENTORY
             REUSE STORAGE
             IGNORE DELETE TRIGGERS
             IMMEDIATE