pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
Trigger para fazer log
3+ messages / 3 participants
[nested] [flat]

* Trigger para fazer log
@ 2003-02-06 12:06 Maurício Sessue Otta <mauricio@cristorei.com.br>
  2003-02-06 13:49 ` Re: Trigger para fazer log Tomasz Myrta <jasiek@klaster.net>
  2003-02-06 15:58 ` Re: Trigger para fazer log Roberto Mello <rmello@cc.usu.edu>
  0 siblings, 2 replies; 3+ messages in thread

From: Maurício Sessue Otta @ 2003-02-06 12:06 UTC (permalink / raw)
  To: pgsql-sql

Oi lista,

tenho um trigger que deve validar alguns campos para entrada/saida de funcionarios e que deve fazer um "log"
do que vai acontecendo.

Por exemplo:
quando é o início do expediente, o trigger deverá guardar algo assim no "log":
Cadastro da Entrada-1: Data 2003-02-06  Horário: 09:51:00

Se o funcionario tentar burlar o esquema e tentar inserir/atualizar o registro, o trigger deve guardar na tabela log que 
foi feita essa tentativa e retornar um erro para o meu script PHP.

Meu problema:
no fim do trigger tenho o seguinte:
 IF length(m_erro) = 0 THEN
 ELSE
  RAISE EXCEPTION ''%'', m_erro;
 END IF;
 RETURN null;

Quando está "EXCEPTION", o que deveria ser guardado no "log" também é desfeito. Quando coloco "NOTICE", a
informação vai para o LOG.

Como fazer para o trigger gerar uma "EXCEPTION" e mesmo assim gravar em outra tabela?!?!


[]'s Mauricio

^ permalink  raw  reply  [nested|flat] 3+ messages in thread

* Re: Trigger para fazer log
  2003-02-06 12:06 Trigger para fazer log Maurício Sessue Otta <mauricio@cristorei.com.br>
@ 2003-02-06 13:49 ` Tomasz Myrta <jasiek@klaster.net>
  1 sibling, 0 replies; 3+ messages in thread

From: Tomasz Myrta @ 2003-02-06 13:49 UTC (permalink / raw)
  To: Maurício Sessue Otta <mauricio@cristorei.com.br>; +Cc: pgsql-sql

Maurício Sessue Otta wrote:
> Oi lista,
>  
> tenho um trigger que deve validar alguns campos para entrada/saida de 
> funcionarios e que deve fazer um "log"
> do que vai acontecendo.
>  
> Por exemplo:
> quando é o início do expediente, o trigger deverá guardar algo assim no 
> "log":
> Cadastro da Entrada-1: Data 2003-02-06  Horário: 09:51:00
>  
> Se o funcionario tentar burlar o esquema e tentar inserir/atualizar o 
> registro, o trigger deve guardar na tabela log que
> foi feita essa tentativa e retornar um erro para o meu script PHP.
>  
> Meu problema:
> no fim do trigger tenho o seguinte:
>  IF length(m_erro) = 0 THEN
>  ELSE
>   RAISE EXCEPTION ''%'', m_erro;
>  END IF;
>  RETURN null;
> Quando está "EXCEPTION", o que deveria ser guardado no "log" também é 
> desfeito. Quando coloco "NOTICE", a
> informação vai para o LOG.
>  
> Como fazer para o trigger gerar uma "EXCEPTION" e mesmo assim gravar em 
> outra tabela?!?!
>  
>  
> []'s Mauricio
I can't understand your language ;-) but I suppose, that after "RAISE EXCEPTION"
you can't find any information in a log table?
RAISE EXCEPTION always aborts transaction and you can't put any log information
into tables when doing this.

Regards,
Tomasz Myrta




^ permalink  raw  reply  [nested|flat] 3+ messages in thread

* Re: Trigger para fazer log
  2003-02-06 12:06 Trigger para fazer log Maurício Sessue Otta <mauricio@cristorei.com.br>
@ 2003-02-06 15:58 ` Roberto Mello <rmello@cc.usu.edu>
  1 sibling, 0 replies; 3+ messages in thread

From: Roberto Mello @ 2003-02-06 15:58 UTC (permalink / raw)
  To: Maurício Sessue Otta <mauricio@cristorei.com.br>; +Cc: pgsql-sql

On Thu, Feb 06, 2003 at 10:06:32AM -0200, Maurício Sessue Otta wrote:
> 
> Quando está "EXCEPTION", o que deveria ser guardado no "log" também é desfeito. Quando coloco "NOTICE", a
> informação vai para o LOG.
> 
> Como fazer para o trigger gerar uma "EXCEPTION" e mesmo assim gravar em outra tabela?!?!

Não dá. Quando você levanta uma exceção (exception) o controle volta para
quem chamou o gatilho. Não há como contornar, que eu saiba.

Você tem que fazer a inserção na relação desejada antes de levantar a
exceção (talvez chamando outra função que o faça).

-Roberto

P.S.: Tomaz, you understood his question correctly :-)

-- 
+----|        Roberto Mello   -    http://www.brasileiro.net/  |------+
+       Computer Science Graduate Student, Utah State University      +
+       USU Free Software & GNU/Linux Club - http://fslc.usu.edu/     +
I'm not super man. But I am very dense.



^ permalink  raw  reply  [nested|flat] 3+ messages in thread


end of thread, other threads:[~2003-02-06 15:58 UTC | newest]

Thread overview: 3+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2003-02-06 12:06 Trigger para fazer log Maurício Sessue Otta <mauricio@cristorei.com.br>
2003-02-06 13:49 ` Tomasz Myrta <jasiek@klaster.net>
2003-02-06 15:58 ` Roberto Mello <rmello@cc.usu.edu>

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox