[firebase-br] Trigger em tabelas de sistema

Saulo Tek-System saulo em teksystem.com.br
Ter Maio 31 14:34:10 -03 2011


Oi Cantu.
É isso mesmo que espero do trigger.
Já testei o TraceApi do FB 2.5, achei bacana, mas o máximo que consigo é
mandar a captura de comandos para um arquivo texto.
Se conseguisse enviar para outro banco de dados poderia filtrar por data,
por seqüência, pela SQL e tal. Acho que seria mais fácil a manipulação desse
log.
Esse tipo de trigger nas tabelas de monitoramento não são mesmo executadas
no FB 2.5?
Obrigado pela atenção.
Abraços,

Saulo

---------------------------------------------------------------
Date: Tue, 31 May 2011 09:31:25 -0300
From: "Carlos H. Cantu" <listas em warmboot.com.br>
To: FireBase <lista em firebase.com.br>
Subject: Re: [firebase-br] Trigger em tabelas de sistema
Message-ID: <1415034147.20110531093125 em warmboot.com.br>
Content-Type: text/plain; charset=iso-8859-1

Pelo que eu entendi do seu trigger, o que vc está querendo fazer é um
"log" dos comandos executados no BD... para isso, a TraceAPI do FB 2.5 é
recomendada.

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

STS> Oi Pessoal. Bom dia a todos.

STS> Gostaria de saber se é possível criar uma trigger nas tabelas de
sistema e
STS> monitoramento do Firebird. 

STS> Eu cheguei a criar uma trigger na tabela de monitoramento (segue abaixo
a
STS> DDL), porém a ela não é disparada quando um registro é incluído na
tabela.
STS> Testei com os eventos after insert  e before insert. 

STS> Alguém saberia me dizer porque isso está acontecendo?

STS> Desde já agradeço. Abraços a todos,

STS> Saulo 

STS> P.S.: Testei uma trigger similar em uma tabela comum e funcionou...

STS>  

STS> CREATE OR ALTER trigger trg_MONITOR_COMANDOS for MON$STATEMENTS

STS> active after insert position 0

STS> as

STS>   declare variable FLAG integer;

STS>   declare variable CAMINHO_ARQLOG varchar(255);

STS> begin

STS>   select CONFIG_MONITOR.STATUS_CONFIGMON,
STS> CONFIG_MONITOR.CAMINHOBD_CONFIGMON

STS>   from CONFIG_MONITOR into :FLAG, :CAMINHO_ARQLOG;

STS>  

STS>   if (:FLAG > 0) then

STS>   begin

STS>        execute statement ('insert into COMANDOS (STAT_ID, STATEMENT_ID,
STS> ATTACHMENT_ID, "TRANSACTION_ID", ESTADO, INICIO, TEXTO_SQL)' ||
STS> 'values (:STAT_ID, :STATEMENT_ID, :ATTACHMENT_ID, :"TRANSACTION_ID",
STS> :ESTADO, :INICIO, :TEXTO_SQL)')

STS>        (STAT_ID := new.MON$STAT_ID, STATEMENT_ID :=
new.MON$STATEMENT_ID,
STS> ATTACHMENT_ID := new.MON$ATTACHMENT_ID,

STS>         ESTADO := new.MON$STATE, INICIO := new.MON$TIMESTAMP, TEXTO_SQL
:=
STS> new.MON$SQL_TEXT)

STS>        on external CAMINHO_ARQLOG

STS>        AS USER 'SYSDBA' PASSWORD 'masterkey'

STS>        WITH COMMON TRANSACTION;       

STS>   end

STS> end;

STS>  

STS>  

STS> ______________________________________________
STS> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
STS> Para saber como gerenciar/excluir seu cadastro na lista, use:
STS> http://www.firebase.com.br/fb/artigo.php?id=1107
STS> Para consultar mensagens antigas: http://firebase.com.br/pesquisa




 

__________ Informação do ESET NOD32 Antivirus, versão da vacina 6017
(20110405) __________

A mensagem foi verificada pelo  ESET NOD32 Antivirus.

http://www.eset.com
 





Mais detalhes sobre a lista de discussão lista