RES: [firebase-br] Como pegar os codigos sql enviados ao banco através de triggers

Flavio Yamil yamil3 em brturbo.com.br
Ter Mar 22 15:33:23 -03 2005


Joelson,
Faça o seguinte:

Crie uma tabela no banco para armazenar os logs. Segue o script:

CREATE TABLE LOG_ACAO (
    NM_TABELA DESCRICAO_100 COLLATE PXW_INTL850,
    VL_CHAVE1 DESCRICAO_50 NOT NULL COLLATE PXW_INTL850,
    VL_CHAVE2 DESCRICAO_50 COLLATE PXW_INTL850,
    VL_CHAVE3 DESCRICAO_50 COLLATE PXW_INTL850,
    VL_CHAVE4 DESCRICAO_50 COLLATE PXW_INTL850,
    VL_CHAVE5 DESCRICAO_50 COLLATE PXW_INTL850,
    VL_CHAVE6 DESCRICAO_50 COLLATE PXW_INTL850,
    NM_ACAO VARCHAR (15) CHARACTER SET WIN1252 NOT NULL COLLATE PXW_INTL850,
    DT_ACAO TIMESTAMP DEFAULT current_timestamp NOT NULL,
    NM_USUARIO DESCRICAO_50 DEFAULT current_user NOT NULL COLLATE
PXW_INTL850);

É nesta tabela que vamos armazenar todas as ações feitas pelos usuários.
Perceba que vamos armazenar:
- O nome da tabela;
- A chave primária (pode ser composta);
- A ação realizada na tabela (INSERT, UPDATE ou DELETE);
- A data da ação;
- O nome do usuário que fez a ação.

Agora é só acrescentar uma trigger para cada tabela que você deseja
armazenar os logs.
Veja o exemplo que eu tenho para armazenar os logs da tabela PLANO_FATURA

Segue script:
CREATE TRIGGER PLANO_FATURA_LOG FOR PLANO_FATURA ACTIVE
AFTER INSERT OR UPDATE OR DELETE POSITION 0
AS
declare variable tabela varchar(50) = 'PLANO_FATURA';  -->Tabela
declare variable acao varchar(15);
declare variable chave1 varchar(10);
declare variable chave2 varchar(10);
BEGIN
  if (inserting) then
  begin
    acao = 'INSERT';
    chave1 = new.nr_contrato;            -->Chave 1
    chave2 = new.cd_fatura;              -->Chave 2
  end

  if (DELETING) then
  begin
    acao = 'DELETE';
    chave1 = old.nr_contrato;
    chave2 = old.cd_fatura;
  end

  if (UPDATING) then
  begin
    acao = 'UPDATE';
    chave1 = old.nr_contrato;
    chave2 = old.cd_fatura;
  end

  insert into log_acao (nm_tabela,vl_chave1,vl_chave2,nm_acao)
  values (:tabela,:chave1,:chave2,:acao);

END


Espero ter ajudado.

Flavio Yamil


-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Joelson - Souzamark
Enviada em: segunda-feira, 21 de março de 2005 20:58
Para: FireBase
Assunto: Re: [firebase-br] Como pegar os codigos sql enviados ao banco
através de triggers

Caro Flavio...
Isso mesmo que eu quero....
qual seria a solução bem prática???????

sem mais
Joelson

>Flavio Yamil escreveu

>Pelo que percebi, provavelmente você está querendo armazenar os LOGS de
>todos os comandos INSERT, UPDATE E DELETE que os usuários realizem nas
>tabelas.
>Se for isso, eu tenho uma solução bem mais prática... 


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br






Mais detalhes sobre a lista de discussão lista