Boas práticas para utilização dos campos S_T_A_M_P_ e I_N_S_D_T_ do TOTVS | DBAccess


Dois novos campos de controle foram adicionados ao TOTVS | DBAccess para facilitar diversas demandas: S_T_A_M_P_ e I_N_S_D_T_. Estes campos internos são utilizados para registrar informações cruciais sobre os dados nas tabelas.

O que são S_T_A_M_P_ e I_N_S_D_T_?

S_T_A_M_P_

Este é um campo interno que registra a data e hora (datetime e/ou timestamp) para cada registro inserido ou alterado na base de dados. Ele não é visível na estrutura de acesso pelo AdvPL.

I_N_S_D_T_

Também um campo interno, registra a data e hora (datetime e/ou timestamp) no momento em que o registro foi inserido na tabela. Assim como o S_T_A_M_P_, não é visível na estrutura de acesso pelo AdvPL.

Ambos os campos seguem o padrão UTC (Coordinated Universal Time) para registrar data e hora.

Para os Desenvolvedores

A criação destes campos deve ser tratada adequadamente por cada desenvolvedor que desejar utilizá-los. Para isso, utiliza-se a função TCConfig.

Passos Essenciais:

  1. Ativar a engine responsável pela criação do campo.
  2. Abrir a tabela que deverá receber o novo campo (recomendável em modo exclusivo).
  3. Desativar a engine responsável pela criação do campo.

Com esses passos, é possível garantir um melhor controle do ambiente durante a criação ou alteração de tabelas.

Para os Administradores de Ambiente

Em novos ambientes, se houver o desejo de criar esses campos, é possível ativar a engine responsável por sua criação através de algumas chaves de configuração.

Para ativar os novos campos nas tabelas do Protheus, basta ir no .INI do dbaccess e inserir:

  • UseRowInsDt=1
  • UseRowStamp=1

Esta chave permite habilitar (ou desabilitar) a criação da coluna de controle I_N_S_D_T_ para novas tabelas criadas através do TOTVS | DBAccess.

Valor
Descrição
1 Habilita a criação da coluna interna I_N_S_D_T_ na criação de novas tabelas.
0 Desabilita a criação da coluna interna I_N_S_D_T_.

Observações

  • A coluna de controle I_N_S_D_T_ usa o tipo nativo do banco de dados DATETIME para MSSQL, e TIMESTAMP para Oracle e Postgres, alimentadas por um gatilho auxiliar criado pelo DBAccess na criação da tabela.
  • Funcionalidade disponível a partir do DBAccess 20.1.1.0 para os bancos MSSQLORACLE e POSTGRES.

 

Consultar campos S_T_A_M_P_ e I_N_S_D_T_

A coluna de controle S_T_A_M_P_ somente pode ser consultada mediante uma Query.

Quando uma coluna do tipo datetime e;ou timestamp é colocada diretamente em uma Query, o DBAccess trata essa informação como um campo do tipo “D” (Data) do AdvPL, sendo retornada somente a data do evento. sem as informações do horário armazenado na coluna. Para recuperar o campo de controle S_T_A_M_P_ e recuperar a informação completa ( data e horário ), por exemplo no formato yyyy-mm-dd hh:MM:ss.mmm ( Ano com 4 dígitos, mês com 2 dígitos, dia com 2 dígitos, e horário completo (24h) com precisão de milissegundos, deve ser feito um CAST específico para retornar a informação como “C” Caractere no AdvPL, para cada banco de dados, vide exemplos abaixo:

  • MSSQL : convert(varchar(23), S_T_A_M_P_ , 21 )
  • POSTGRES : to_char(s_t_a_m_p_,’YYYY-MM-DD HH:MI:SS.MS’)
  • ORACLE : to_char(s_t_a_m_p_,’YYYY-MM-DD HH24:MI:SS.FF’)

 

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.