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:
- Ativar a engine responsável pela criação do campo.
- Abrir a tabela que deverá receber o novo campo (recomendável em modo exclusivo).
- 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 MSSQL, ORACLE 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’)