Bom dia amigo,
uma trigger sempre trabalha com uma função, correto!?
Então, é só criar uma função que obtenha a propriedade TG_RELNAME que é 
automaticamente enviada para a mesma quando do evento de inserção, 
atualização ou exclusão.
De posse desse nome, as possibilidade são muitas.
Você pode inserir a mesma em uma tabela temporária, etc. ou, como eu, apenas 
ser notificado do evento na tabela.
A trigger abaixo chama a função de nome notificação() para a tabela de nome 
usuario.
Na oportunidade é possível obter o nome da tabela com a propriedade 
TG_RELNAME.
Por sua vez,  a função de notificação (que deve ser criada primeiro) envia 
uma notificação com o nome da tabela.

"CREATE OR REPLACE FUNCTION notificacao() RETURNS TRIGGER AS $$ BEGIN 
EXECUTE 'NOTIFY ' || TG_RELNAME; RETURN NULL; END; $$ LANGUAGE PLPGSQL"
'CREATE TRIGGER tusuario AFTER INSERT OR UPDATE OR DELETE ON usuario FOR 
EACH ROW EXECUTE PROCEDURE notificacao()'

Assim, quando entro numa determinada rotina, disparo um LISTEN e, de tempos 
em tempos, verifico as notificações recebidas.
Se o nome da tabela estiver relacionado, aviso o usuário de que a tabela foi 
atualizada e ele deve "atualizar" os dados visualizados.
Você pode fazer isso lendo o catálogo pg_listener também.
Dê uma olhada em LISTEN e NOTIFY.

MarceloG

PS: se for ler o pg_listener, não se esqueça de observar se o PID do 
processo notificante não é o mesmo.

----- Original Message ----- 
From: "Anderson Aguilar Ferreira" <ander...@pchelpmaringa.com.br>
To: "Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql.org.br>
Sent: Monday, June 29, 2009 8:16 AM
Subject: Re: [pgbr-geral] Saber de onde veio o disparo da trigger


Bom dia Euler.

Eu sei sim o conceito de TRIGGER.

E o que eu queria nao e qual operacao ativou a trigger e sim de onde ela foi
ativada. E ja sabia que isto nao tem no PostgreSQL, mas nao custa nada
perguntar.

E antes de responder da maneira que vc respondeu, entenda primeira a
pergunta, Sr. Sabe Tudo.

Mas mesmo assim, muito obrigado pela atencao de todos.

----- Original Message ----- 
From: "Euler Taveira de Oliveira" <eu...@timbira.com>
To: "Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql.org.br>
Sent: Sunday, June 28, 2009 2:01 PM
Subject: Re: [pgbr-geral] Saber de onde veio o disparo da trigger


Anderson Aguilar Ferreira escreveu:

[corte as suas mensagens...]

> O que eu gostaria de saber, é se o PostgreSQL tem algum parâmetro que me
> informa que quem disparou a TRIGGER log_clienderecos foi
> a CONSTRAINT nome_qualquer.
>
Restrição (aka _constraint_) *não* dispara gatilho. Você não entendeu o
conceito de gatilhos [1][2]. Eles são associados a tabelas somente. E o que
você quer é que o Osvaldo já disse: utilize TG_* [3].


[1] http://www.postgresql.org/docs/8.3/static/triggers.html
[2] http://www.postgresql.org/docs/8.3/static/sql-createtrigger.html
[3] http://www.postgresql.org/docs/8.3/static/plpgsql-trigger.html


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



--------------------------------------------------------------------------------



Nenhum vírus encontrado nessa mensagem recebida.
Verificado por AVG - www.avgbrasil.com.br
Versão: 8.5.375 / Banco de dados de vírus: 270.12.94/2208 - Data de 
Lançamento: 06/29/09 05:54:00

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a