[firebase-br] Log em uma tabela diferente

Marcos Weimer marcosweimer em gmail.com
Qua Dez 14 13:31:57 -03 2016


Veja como é feito aqui (estou passando a DDL completa da procedure, assim
fica mais facil de entender os parametros de entrada)

SET TERM ^ ;

create or alter procedure LOG_GRAVAR_COLUNA (
    OPERACAO_ID integer,
    NOME_COLUNA varchar(31),
    OLD_VALUE varchar(5000),
    NEW_VALUE varchar(5000))
as
begin
      execute statement (
      'INSERT INTO log_campos (ID, OPERACAO_ID, COLUNA, VALOR_ANTERIOR,
VALOR_NOVO)
      VALUES (GEN_ID(GEN_LOG_CAMPOS, 1), ?, ?, ?, ?);')
      (:OPERACAO_ID, :NOME_COLUNA, :OLD_VALUE, :NEW_VALUE)
   WITH AUTONOMOUS TRANSACTION
   AS USER 'SYSDBA'
   PASSWORD 'masterkey'
   ROLE 3
  on external '127.0.0.1:c:\caminho\banco_log.fdb'; --configurar aqui o
caminho do banco
end^

SET TERM ; ^



-=Ma®©oS=-
Marcos R. Weimer
Delphi / C# / ASP.NET / PHP / WebServices / Firebird


Em 14 de dezembro de 2016 11:57, Firebase <firebase em dominioinf.com.br>
escreveu:

> Bom dia Marcos, Obrigado pela resposta.
>
> Tentei fazer dessa forma:
>
> CREATE OR ALTER PROCEDURE P_INSERTINTOIBLM$COLUMNLOGTESTE (
>  OPERATIONLOG_ID NUMERIC(18, 0),
>  COLUMN_NAME VARCHAR(31),
>  OLD_VALUE VARCHAR(255),
>  NEW_VALUE VARCHAR(255),
>  OLD_VALUE_BLOB BLOB SUB_TYPE 0 SEGMENT SIZE 80,
>  NEW_VALUE_BLOB BLOB SUB_TYPE 0 SEGMENT SIZE 80
> )
> AS
> BEGIN
>   EXECUTE STATEMENT
>   'INSERT INTO IBLM$COLUMNLOG (ID, OPERATIONLOG_ID, COLUMN_NAME,
> OLD_VALUE, NEW_VALUE, OLD_VALUE_BLOB, NEW_VALUE_BLOB)
>    VALUES (GEN_ID(GEN_IBLM$COLUMNLOG_ID, 1), :OPERATIONLOG_ID,
> :COLUMN_NAME, :OLD_VALUE, :NEW_VALUE, :OLD_VALUE_BLOB, :NEW_VALUE_BLOB)'
>    ON EXTERNAL 'C:\SISTEMAS\Log.fdb'
>   AS USER 'SYSDBA'
>   PASSWORD 'masterkey'
>   INTO :OPERATIONLOG_ID, :COLUMN_NAME, :OLD_VALUE,
> :NEW_VALUE,:OLD_VALUE_BLOB,:NEW_VALUE_BLOB;
> END
> ;
>
> Porem gera o erro:
> Firebird error.unknown ISC error 335544926.
> At procedure 'P_INSERTINTOIBLM$COLUMNLOGTESTE' line: 11, col: 4.
>
> O que posso estar fazendo de errado?
>
> Grato
>
> -----Mensagem Original----- From: Marcos Weimer
> Sent: Wednesday, December 14, 2016 10:26 AM
> To: FireBase
> Subject: Re: [firebase-br] Log em uma tabela diferente
>
>
> Aqui salvamos em banco separado (acho que foi isso que vc quer dizer).
>
> Veja o execute statement on external
>
> http://firebirdsql.org/refdocs/langrefupd25-psql-execstat.html
>
>
>
> -=Ma®©oS=-
> Marcos R. Weimer
> Delphi / C# / ASP.NET / PHP / WebServices / Firebird
>
>
> Em 14 de dezembro de 2016 10:20, Firebase <firebase em dominioinf.com.br>
> escreveu:
>
> Bom dia a todos,
>>
>> Hoje tenho uma rotina no banco de dados utilizando triggers para fazer
>> auditoria de tudo que é inserido, editado ou excluido nas tabelas
>> no banco de dados.
>>
>> O problema é que o banco de dados está ficando gigante devido ao acumulo
>> desses registros.
>>
>> Gostaria de saber se haveria possibilidade de esses logs serem gravados em
>> uma tabela separada do banco de dados?
>>
>> Exemplo: o banco de dados principal em C:\Sistema\Dados.fdb
>>                o banco de dados da auditoria em C:\Sistema\Log.fdb
>>
>> Grato
>>
>>
>>
>> ---
>> Este email foi escaneado pelo Avast antivírus.
>> https://www.avast.com/antivirus
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://www.firebase.com.br/pes
>> quisa_lista.html
>>
>> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://www.firebase.com.br/pes
> quisa_lista.html
>
> ---
> Este email foi escaneado pelo Avast antivírus.
> https://www.avast.com/antivirus
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://www.firebase.com.br/pes
> quisa_lista.html
>



Mais detalhes sobre a lista de discussão lista