[firebase-br] Como recuperar o IP que disparou a trigger
Fábio Henrique Beverari
fhbeverari em gmail.com
Sáb Jul 10 10:01:13 -03 2010
Pessoal bom dia!
Estou desenvolvendo um sistema de auditoria em banco de dados Firebird
2.1.3, quero gravar um log de delete, update e insert em uma tabela chamada
"LOG", minha idéia foi a seguinte:
1º Criar uma coluna na minha tabela "USUARIO" com um ID que será o
meu mon$attachments_ID para pegar o ID da conexão(mon$attachments_ID) do
usuario no login da aplicação;
até ai tudo bem com esse select "select * from mon$attachments" eu faço
isso;
2º Usuário realiza suas operações normais de Insert, Update e delete, e a
cada ação minha trigger dispara um log(um insert na tabela LOG);
3º Dentro dessa trigger preciso de uma rotina que descubra o IP de quem a
disparou, por que dentro da tabela mon$attachments possui o IP da conexão;
Alguém tem alguma idéia de como criar esse rotina dentro da trigger??
Abaixo minha trigger de exemplo:
Obs. A tabela LogItens são as colunas da tabela
CREATE OR ALTER TRIGGER TR_BANCO_LOG FOR BANCO
ACTIVE BEFORE INSERT OR UPDATE OR DELETE POSITION 0
AS
DECLARE VARIABLE USER_NAME smallint;
DECLARE VARIABLE TIPO_OP VARCHAR(15);
declare variable NUMID INTEGER;
begin
--Aqui minha rotina para recuperar o IP que disparou a trigger
:USER_NAME
if (INSERTING) then
TIPO_OP = 'INSERT';
if (UPDATING) then
TIPO_OP = 'UPDATE';
if (DELETING) then
TIPO_OP = 'DELETE';
select max(IDLOG +1) as maximo from LOG into :numid;
insert into "LOG" (idlog,datahora, usuario, tabela, operacao, pkey1,
pkey1_value)
values (:numid,'NOW', :USER_NAME , 'BANCO', :TIPO_OP, 'CODRED',
NEW.codred);
insert into logitens (idlog, coluna, old_value, new_value)
values (:numid,'CODRED',OLD.codred,NEW.codred);
insert into logitens (idlog, coluna, old_value, new_value)
values (:numid,'DES1',OLD.des1,NEW.des1);
insert into logitens (idlog, coluna, old_value, new_value)
values (:numid,'DES2',OLD.des2,NEW.des2);
insert into logitens (idlog, coluna, old_value, new_value)
values (:numid,'DES3',OLD.des3,NEW.des3);
insert into logitens (idlog, coluna, old_value, new_value)
values (:numid,'DES4',OLD.des4,NEW.des4);
insert into logitens (idlog, coluna, old_value, new_value)
values (:numid,'NUMAGE',OLD.numage,NEW.numage);
insert into logitens (idlog, coluna, old_value, new_value)
values (:numid,'NUMBAN',OLD.numban,NEW.numban);
insert into logitens (idlog, coluna, old_value, new_value)
values (:numid,'NUMCON',OLD.numcon,NEW.numcon);
insert into logitens (idlog, coluna, old_value, new_value)
values (:numid,'GERAL',OLD.geral,NEW.geral);
insert into logitens (idlog, coluna, old_value, new_value)
values (:numid,'INTERNET',OLD.internet,NEW.internet);
end
Mais detalhes sobre a lista de discussão lista