SQL Server Temp Table

Temporal Tables, também conhecida como System-Versioned, é a nova feature incluída no SQL Server 2016 para armazenamento de dados históricos. Todas as alterações realizadas pelos usuários na tabela atual são armazenadas de maneira simples e prática em outra tabela com a finalidade de manter o versionamento das informações. Temporal Tables podem ser utilizadas em diversos cenários, dentre os quais podemos destacar a auditoria de dados, onde é possível realizar uma análise detalhada em um determinado período no tempo, recuperação de dados excluídos ou modificados acidentalmente pelo usuário e versionamento de dados em um ambiente de Data Warehouse (ETL).

Armazenar informações atuais e históricas é um processo relevante dentro do mundo corporativo, pois permitem uma análise mais detalhada dos acontecimentos ao longo do tempo. Este artigo tem a finalidade de mostrar como funciona a nova feature denominada Temporal Tables, suas principais características, limitações e exemplos práticos que podem auxiliar o DBA e desenvolvedores na análise de dados.

Temporal Tables é um novo tipo de tabela de usuário e está disponível em todas as versões do SQL Server 2016. Sua finalidade é manter o histórico completo de alterações de dados em tabelas específicas, permitindo uma análise e acompanhamento dos dados ao longo do tempo. É conhecida também como system-versioned, pois o período de validade de cada linha é gerenciado pelo mecanismo de banco de dados.

Temporal Tables é recurso nativo do SQL Server 2016 e não requer qualquer configuração adicional na instância ou no banco de dados. A implementação é realizada através de duas tabelas: uma para manter os dados atuais e outra para armazenar as modificações na tabela histórica. Durante a criação da estrutura da tabela, obrigatoriamente temos que especificar uma chave primária (Primary Key) e as colunas de início e fim do período com o tipo de dados datetime2 para que seja possível manter o versionamento e a validade de cada linha, além de uma cláusula adicional para habilitar a funcionalidade. Uma vez habilitada, o gerenciamento é feito pelo próprio SQL Server.

Quando um usuário de aplicação realiza qualquer modificação na tabela que armazena os dados atuais, automaticamente a versão anterior da linha é gravada na tabela histórica para futuras consultas, conforme podemos observar na Figura 1.

Como funciona a Temporal Table
Figura 1. Como funciona a Temporal Table

Alguns pré-requisitos devem ser atendidos para que seja possível utilizar a Temporal Tables:

  • a tabela atual deve conter a chave primária (PK);
  • uma coluna com o tipo de dados DATETIME2 e com a cláusula GENERATED ALWAYS AS ROW START para identificar a data de início da validade do registro;
  • uma coluna com o tipo de dados DATETIME2 e com a cláusula GENERATED ALWAYS AS ROW END para identificar a data de término da validade do registro;
  • a tabela deverá ser especificada com a cláusula SYSTEM_VERSIONING ...
    Fim do trecho gratuito • continue abaixo
    CONTEÚDO EXCLUSIVO

    Desbloqueie toda a DevMedia

    • +2000 artigos e vídeos
    • +40 trilhas sobre Front-end, Back-end, IA e muito mais
    • +5000 exercícios práticos
    • Mentorias ao vivo individuais
    até 50% OFF
    A partir de
    R$ 69 /mês
    Assinar agora