[firebase-br] Trigger em tabelas de sistema
Saulo Tek-System
saulo em teksystem.com.br
Ter Maio 31 08:11:45 -03 2011
Oi Pessoal. Bom dia a todos.
Gostaria de saber se é possível criar uma trigger nas tabelas de sistema e
monitoramento do Firebird.
Eu cheguei a criar uma trigger na tabela de monitoramento (segue abaixo a
DDL), porém a ela não é disparada quando um registro é incluído na tabela.
Testei com os eventos after insert e before insert.
Alguém saberia me dizer porque isso está acontecendo?
Desde já agradeço. Abraços a todos,
Saulo
P.S.: Testei uma trigger similar em uma tabela comum e funcionou...
CREATE OR ALTER trigger trg_MONITOR_COMANDOS for MON$STATEMENTS
active after insert position 0
as
declare variable FLAG integer;
declare variable CAMINHO_ARQLOG varchar(255);
begin
select CONFIG_MONITOR.STATUS_CONFIGMON, CONFIG_MONITOR.CAMINHOBD_CONFIGMON
from CONFIG_MONITOR into :FLAG, :CAMINHO_ARQLOG;
if (:FLAG > 0) then
begin
execute statement ('insert into COMANDOS (STAT_ID, STATEMENT_ID,
ATTACHMENT_ID, "TRANSACTION_ID", ESTADO, INICIO, TEXTO_SQL)' ||
'values (:STAT_ID, :STATEMENT_ID, :ATTACHMENT_ID, :"TRANSACTION_ID",
:ESTADO, :INICIO, :TEXTO_SQL)')
(STAT_ID := new.MON$STAT_ID, STATEMENT_ID := new.MON$STATEMENT_ID,
ATTACHMENT_ID := new.MON$ATTACHMENT_ID,
ESTADO := new.MON$STATE, INICIO := new.MON$TIMESTAMP, TEXTO_SQL :=
new.MON$SQL_TEXT)
on external CAMINHO_ARQLOG
AS USER 'SYSDBA' PASSWORD 'masterkey'
WITH COMMON TRANSACTION;
end
end;
Mais detalhes sobre a lista de discussão lista