Para que serve os novos campos S_T_A_M_P_ e I_N_S_D_T_ e como utilizá-los no Protheus

Nesse artigo vamos explicar para que serve os campos S_T_A_M_P_ e I_N_S_D_T_, e como habilitá-los na sua base.

Esses dois campos, são para controle interno nas tabelas do Protheus, abaixo uma breve descrição de cada um deles:

  • I_N_S_D_T_: armazena a data e hora de quando um registro é inserido em uma tabela
  • S_T_A_M_P_: armazena a data e hora de quando um registro é alterado em uma tabela

Abaixo o passo a passo de como ativar:

  1. Pare os serviços do Protheus
  2. Vá na pasta do seu DBAccess
  3. Abra o arquivo dbaccess.ini e dentro dele, nos ambientes que você tiver, adicione UseRowInsDt=1 e UseRowStamp=1 (para ativar o insdt e Stamp respectivamente). Abaixo um print de exemplo:

Alterando no dbaccess.ini

  1. Suba os serviços do Protheus
  2. Se a tabela que você quer que esses campos sejam criados, já existir, faça um backup dela e drope. Senão, basta abrir alguma tela que irá ser criado a tabela já com os campos

Exemplo dos campos criados

  1. Agora ao fazer alguma manutenção na tabela, os dados serão gravados, conforme print abaixo

Exemplo de conteúdo preenchido

Referências:

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

4 Responses

  1. Carlos disse:

    Sabe me dizer se existe alguma forma de criar este campos sem realizar o drop da tabela ? tenho tabela com mais de 3540 milhões registros.

  2. Sangar Zucchi disse:

    Eu criei um programa para criar os campos S_T_A_M_P_ e I_N_S_D_T_ sem a necessidade de “dropar a tabela” e “apendar os dados”. Basta criar vários “dbSelectArea()” em sequencia igual o exemplo abaixo:

    #INCLUDE “TOTVS.CH”
    #INCLUDE “TOPCONN.CH”

    /*/{Protheus.doc} TESTE
    Realiza a criação dos campos S_T_A_M_P_ e I_N_S_D_T_ sem a necessidade de “dropar” e “apendar” as tabelas…
    @type function
    @version 12.1.2210
    @author Sangar Zucchi
    @since 04/03/2024
    @see https://tdn.totvs.com/pages/viewpage.action?pageId=563943271
    @see https://tdn.totvs.com/display/tec/TCConfig
    /*/
    User Function TESTE()

    Private oMainWnd

    // Montando o ambiente em caso de execução do código direto via VSCode ou chamada direta. Caso for chamar via menu, comentar o código “RPC” abaixo:
    // Realizando o login na Empresa 01 / Filial 0101
    RpcClearEnv()
    RpcSetType(3)
    RpcSetEnv(“01″,”0101″,””,””,””,””,{})

    // Conectando ao BD
    TCLink()

    // Consultando S_T_A_M_P_ e I_N_S_D_T_ para novas tabelas
    xRet := TCConfig( “GETUSEROWSTAMP” )//Consulta se a criação da coluna S_T_A_M_P_ para novas tabelas está habilitada, retorna “ON” ou “OFF”.
    xRet := TCConfig( “GETUSEROWINSDT” )//Consulta se a criação da coluna I_N_S_D_T_ para novas tabelas está habilitada, retorna “ON” ou “OFF”.

    // Consultando S_T_A_M_P_ e I_N_S_D_T_ para abertura de tabelas
    xRet := TCConfig( “GETAUTOSTAMP” )//Consulta se a criação automática da coluna S_T_A_M_P_ na abertura da tabela está habilitada, retorna “ON” ou “OFF”.
    xRet := TCConfig( “GETAUTOINSDT” )//Consulta se a criação automática da coluna I_N_S_D_T_ na abertura da tabela está habilitada, retorna “ON” ou “OFF”.

    // Habilitando S_T_A_M_P_ e I_N_S_D_T_ para novas tabelas
    xRet := TCConfig( “SETUSEROWSTAMP=ON” )//Permite ligar ou desligar a criação da coluna interna S_T_A_M_P_ para novas tabelas.
    xRet := TCConfig( “SETUSEROWINSDT=ON” )//Permite ligar ou desligar a criação da coluna interna I_N_S_D_T_ para novas tabelas.

    // Habilitando S_T_A_M_P_ e I_N_S_D_T_ para abertura de tabelas
    xRet := TCConfig( “SETAUTOSTAMP=ON” )//Permite habilitar a criação automática da coluna S_T_A_M_P_ na abertura da tabela.
    xRet := TCConfig( “SETAUTOINSDT=ON” )//Permite habilitar a criação automática da coluna I_N_S_D_T_ na abertura da tabela.

    // Abrindo as tabelas que desejo criar os campos S_T_A_M_P_ e I_N_S_D_T_ automaticamente sem necessidade de “DROPAR” e “APENDAR” elas:
    dbSelectArea(“SF1”)
    dbSelectArea(“SD1”)

    // Desabilitando S_T_A_M_P_ e I_N_S_D_T_ para novas tabelas
    xRet := TCConfig( “SETUSEROWSTAMP=OFF” )//Permite ligar ou desligar a criação da coluna interna S_T_A_M_P_ para novas tabelas.
    xRet := TCConfig( “SETUSEROWINSDT=OFF” )//Permite ligar ou desligar a criação da coluna interna I_N_S_D_T_ para novas tabelas.

    // Desabilitando S_T_A_M_P_ e I_N_S_D_T_ para abertura de tabelas
    xRet := TCConfig( “SETAUTOSTAMP=OFF” )//Permite habilitar a criação automática da coluna S_T_A_M_P_ na abertura da tabela.
    xRet := TCConfig( “SETAUTOINSDT=OFF” )//Permite habilitar a criação automática da coluna I_N_S_D_T_ na abertura da tabela.

    // Desconectando do BD
    TCUnlink()

    Return

Deixe uma resposta

Terminal de Informação