Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Remover CAST, desnecessário
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 DadosAs atualizações deste campo são feitas mediante gatilhos criados pelo DBAccess para as tabelas com este recurso habilitado
  • 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 configurações adicionais do DBACcess – para maiores detalhesm consulte o link <TODO>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. 
  • Consulte a documentação no link DBAccess - Seção [Environment], chave UseRowStamp
  • 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 : 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')