Monitorar alterações em tabela - trigger já está utilizada

Discussão em 'Progress 4GL' iniciado por tecnologia-fitedi, Junho 26, 2014.

  1. tecnologia-fitedi

    tecnologia-fitedi Sem Pontuação

    Boa tarde pessoal,

    tô querendo monitorar quando alguém dê um delete em um registro, porém a tabela já tem uma trigger nativa do Datasul.

    Existe alguma outra maneira de monitorar isso, a não ser utilizando triggers no banco?


    Valeu!
  2. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    Bom dia,

    No Datasul mesmo a tabela tendo trigger nativa ainda é possível você informar uma trigger especifica. No módulo básico, você vai ter o cadastro de "Tabela Dicionário Datasul", lá você vai informar o nome da tabela e cadastrar seu específico para a trigger de delete, "UPC DELETE".

    Abaixo o exemplo da UPC de DELETE:
    PHP:
    DEF PARAM BUFFER b-tit_ap     FOR tit_ap.

    def new global shared var v_cod_usuar_corren
        
    as character
        format 
    "x(12)":U
        label 
    "Usuário Corrente"
        
    column-label "Usuário Corrente"
        
    no-undo.

    /* Aqui vai o código especifico  */
    create tabela-esp.
    assign tabela-esp.cod_tit_ap = b-tit_ap.cod_tit_ap
               tabela
    -esp.cod_parcela = b-tit_ap.cod_parcela
               tabela
    -esp.usuario_delete = v_cod_usuar_corren
               tabela
    -esp.horario_delete = now.


    RETURN 
    "OK".
    Depois de cadastrar a trigger de DELETE, será necessário rodar o Otimizador de Performance, no menu Tarefas do módulo Básico, para ativar a trigger.

    Espero que ajude.

    Abs.
  3. ds201

    ds201 Membro Participativo

    Boa noite

    Uma dúvida: Isto funciona para bancos Progress do cliente? Ex: EMSPL
    Tenho a impressão que só funciona para tabelas nativas do EMS/TOTVS.

    Nota: Um consultor TOTVS me garantiu que no TOTVS11 não é mais necessário executar o "Otimizadór de Performance".
    Achei estranho mais o profissional é sério.

    Sds
  4. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    Olá @ds201,

    Para bancos do cliente, você tem que cadastrar a trigger manualmente no dicionário de dados para a tabela seguindo o padrão Progress, salvando em arquivos, porém a sintaxe para trigger de WRITE seria o abaixo, lembrar de marcar a opção OVERRIDABLE e desmarcar o CHECK CRC para poder substituir a trigger sem necessidade de recompilar.
    PHP:
     TRIGGER PROCEDURE FOR WRITE OF tabela OLD BUFFER old-tabela. 
    Quanto ao otimizador, se te disseram pode ser, mas eu abri um chamado recente no TOTVS 11.5.8 sobre um problema de uma tabela que não estava funcionando, mandaram um XML, e pediram para executar o Otimizador.

    Minha opinião "particular pessoal", piorar não vai, e como esta no menu eu ainda executaria, só para garantir.

    Espero que ajude.

Compartilhe esta Página