[firebase-br] Trigger em tabelas de sistema
Carlos H. Cantu
listas em warmboot.com.br
Ter Maio 31 09:31:25 -03 2011
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
Mais detalhes sobre a lista de discussão lista