Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Explicar como recuperar o valor com Query
OcorrênciaNecessidade de criação de um campo interno para tabelas do DBAccess, não visíveis na estrutura de acesso pelo AdvPL, que registre um datetime e/ou timestamp para cada registro inserido e/ou alterado na base de dados. 
ImplementaçãoImplementado o campo de controle "S_T_A_M_P_", para os bancos MSSQL, ORACLE e POSTGRES, atualizado diretamente pelo SGDB para as linhas da tabela que receberam uma instrução de "UPDATE". 
Informações adicionais
  • Referente ao chamado: MTEC-3238
  • O tipo do campo criado na tabela é DATETIME (para MSSQL) e TIMESTAMP (para Postgres e Oracle)
  • O campo é atualizado na inclusão de novos registros e na alteração de registros existentes com a data e hora atuais no fuso horário UTC, obtido de forma nativa pelo Banco de Dados. 
  • A responsabilidade de criação deste campo de controle e do gatilho no Banco de Dados para mantê-lo atualizado é do DBAccess. 
  • A inclusão deste campo nas novas tabelas a serem criadas, e a inclusão deste campo sob demanda nas tabelas já existentes em um determinado SGDB também podem ser feitas mediante a chamada da nova função TCConfig(). Para maiores detalhes consulte a nota de release Implementação - Função TCConfig
  • Uma tabela criada com a coluna de controle S_T_A_M_P_ atualiza a coluna no momento da inserção do registro utilizando a constraint default do campo, e em qualquer alteração feita na tabela através de uma trigger de update criada no banco de dados. 
  • Acrescentar a coluna S_T_A_M_P_ em uma tabela já existente não preenche o conteúdo dos campos para os dados já existentes na tabela, os registros já existentes permanecem com o valor NULL até que sejam alterados. 
  • O DBAccess pode ser configurado para criar a coluna de controle automaticamente nas novas tabelas, ou mesmo acrescentar a coluna nas tabelas já existentes de forma automática mediante as configurações UseRowStamp=1AutoStamp=1, respectivamente. Para maiores detalhes, consulte a documentação nos links DBAccess - Seção [Environment], chave UseRowStampDBAccess - Seção [Environment], chave AutoStamp 
  • As colunas S_T_A_M_P_ não são criadas em tabelas temporárias. 
Informações

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 : cast ( to_char(s_t_a_m_p_,'YYYY-MM-DD HH:MI:SS.MS') 
ORACLE : cast ( to_char(s_t_a_m_p_,'YYYY-MM-DD HH24:MI:SS.FF')