Como trabalhar com sql: 2011 tabelas de versão do sistema

tabelas de versão do sistema têm um propósito diferente do que tabelas de período de tempo de aplicação em SQL e, consequentemente, funcionam de forma diferente. tabelas de período de tempo de aplicação permitem definir períodos de tempo e operar sobre os dados que cai dentro desses períodos. Em contraste, as tabelas de versão do sistema são projetados para criar um registro auditável de exatamente quando um item de dados foi adicionado, alterado dentro, ou excluído do banco de dados.

Por exemplo, é importante para um banco para saber exatamente quando um depósito ou levantamento foi feito, e esta informação deve ser mantida por um período de tempo designado por lei. Da mesma forma, corretores da bolsa precisa controlar exatamente quando uma transação de compra foi feita. Há um certo número de casos semelhantes, onde saber quando um determinado evento ocorreu, para baixo para uma fracção de segundo, é importante.

Aplicações, tais como a aplicação de banco ou a aplicação corretor da bolsa têm exigências rigorosas:

  • Qualquer atualização ou operação de exclusão deve preservar o estado original da linha antes de executar a atualização ou excluir operação.

  • O sistema, em vez do utilizador, mantém as horas de início e fim dos períodos das linhas.

    linhas originais que tenham sido submetidos a uma operação UPDATE ou DELETE permanecem na tabela e são referidos como linhas históricas. Os usuários não podem modificar o conteúdo de linhas históricas ou os períodos associados com as linhas. Apenas o sistema pode atualizar os períodos de linhas em uma tabela de versão do sistema. Isto é feito através da actualização as colunas não de um período da mesa ou como um resultado de deleções fileira.

    Estes constrangimentos garantir que o histórico de alterações de dados está imune a manipulações, assim, cumprir as normas de auditoria e conformidade com regulamentações governamentais.

tabelas de versão do sistema são distinguidos de tabelas de período de tempo de aplicação por um par de diferenças na CRIO declarações que as criam:

Video: Importação SQL via SQL Server Management Studio

  • Considerando que, uma tabela período de tempo de aplicação o utilizador pode dar qualquer nome para o período, em uma tabela de versão do sistema, o nome do período deve ser SYSTEM_TIME.

  • o CRIO declaração deve incluir as palavras-chave Com a versão SISTEMA. Embora o SQL: 2011 permite que o tipo de dados para o início de época e final do período a ser ENCONTRO digitar ou um dos tipos de timestamp, você quase sempre querer usar um dos tipos de timestamp. Claro, qualquer tipo que você escolher para a coluna start também deve ser utilizado para a coluna final.

Para ilustrar o uso de tabelas de versão do sistema, considere tabelas criadas para os funcionários e departamentos. Você pode criar uma tabela de versão do sistema com o seguinte código:


CRIAR employee_sys mesa (EmpID Integer, Sys_Start timestamp (12) GERADOS SEMPRE AS ROW INICIAR, Sys_End TIMESTAMP (12) GERADOS SEMPRE AS ROW END, EmpName VARCHAR (30), o prazo de SYSTEM_TIME (SysStart, SysEnd)) COM SISTEMA VERSIONING-

Video: Criando Tabelas no SQL SERVER 2014

Uma linha em uma tabela de versão do sistema é considerado um linha atual sistema se a hora atual está contida no período de sistema de tempo. Caso contrário, considera-se ser uma linha histórica do sistema.

tabelas de versão do sistema são semelhantes às tabelas de período de tempo de aplicação em muitos aspectos, mas também há diferenças. Aqui estão alguns:

  • Os usuários não podem atribuir ou alterar os valores nas colunas Sys_Start e Sys_End. Estes valores são atribuídos e alterados automaticamente pelo SGBD. Esta situação está mandatado pelas palavras-chave GENERATED ALWAYS.

  • Quando você usa a operação INSERT para adicionar algo em uma tabela de versão do sistema, o valor na coluna Sys_Start é definida automaticamente para a hora da transação, que está associada a cada transação. O valor atribuído à coluna Sys_End é o maior valor do tipo de dados da coluna.

  • Em tabelas de versão do sistema, o ATUALIZAR e EXCLUIR operações operar apenas em linhas atuais do sistema. Os usuários não podem atualizar ou excluir linhas sistema histórico.

  • Os usuários não podem modificar o início do período de sistema de tempo ou terminar o tempo de qualquer linhas atuais ou históricos do sistema.

  • Sempre que você usar o ATUALIZAR ou EXCLUIR operação em uma linha atual do sistema, uma linha histórica do sistema é automaticamente inserido.

    Uma instrução de atualização em uma tabela de versão do sistema primeira insere uma cópia da linha antiga, com seu tempo do fim sistema definido para a hora da transação. Isto indica que a linha deixou de ser atual em que timestamp. Em seguida, o DBMS executa a atualização, simultaneamente mudando o horário de início sistema de período para a hora da transação.

    Agora a linha atualizada é a linha atual do sistema como do timestamp transação. ATUALIZAR gatilhos para as linhas em questão vai disparar, mas INSERIR gatilhos não dispara mesmo que linhas históricas estão sendo inserido como parte desta operação.

UMA EXCLUIR operação em uma tabela de versão do sistema não elimina as linhas especificadas. Em vez disso, altera a hora final do período sistema em tempo dessas linhas para a hora do sistema. Isso indica que as linhas deixou de ser atual como da data e hora da transação. Agora as linhas são parte do sistema histórico ao invés do sistema atual. Quando você executa uma EXCLUIR operação, qualquer EXCLUIR gatilhos para as linhas afetadas dispara.


Publicações relacionadas