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