Então Sebastian, a idéia é a seguinte:

No Delphi eu controlo as alterações de algumas tabelas críticas para manter um 
log do tipo
Usuário C Alterou CampoX de A para B
Isso acontece para o caso do chefe querer saber qual usuário fez caca, rsrsrs, 
ou num caso de alteração equivocada mesmo.
Num componente chamado ZQuery eu tenho as propriedades NewValue e OldValue, 
onde consigo montar uma rotina pra guardar essas alterações
Mas isso acaba sendo trabalhoso pelo fato de as tabelas poderem ser alteradas 
em varias janelas ou mesmo sem intervenção direta do usuário
Se eu colocar isso numa trigger, terei uma controle mais preciso, independente 
do front-end, já que eu também vou usar PHP pra acessar esse banco.

Espero que tenha entendido a necessidade.

A grosso modo seria uma coisa bem simples, monitorar dadas tabelas no 
AfterUpdate pra saber quais campos foram mudados e gravar numa outra tabela, só 
isso.
Mas quero automatizar de tal forma que não precise indicar campo a campo e sim 
por referencia tipo FIELDS[i].NewValue num FOR 


Marcelo Silva
------------------------------------------
Desenvolvedor Delphi, PHP

Tel.: (11) 2962-7390
Cel.: (11) 5250-1407 - Tim
Cel.: (11) 9693-4251 - Vivo




From: Sebastian Webber 
Sent: Wednesday, January 09, 2013 10:49 AM
To: Comunidade PostgreSQL Brasileira 
Subject: Re: [pgbr-geral] Trigger de alterações

Você não consegue ver os old/new values de outros registros além do acionado 
pela trigger.

Supondo que você realmente precise dessa informação talvez você pudesse separar 
o processo em duas partes, aonde a trigger apenas grave o valor antigo e novo e 
um segundo processo rode e analise os dados que for necessário.

Se você comentar qual é sua idéia, seria possível dar mais sugestões.

Sebastian Webber 
http://swebber.me




--------------------------------------------------------------------------------
From: [email protected]
To: [email protected]
Date: Mon, 7 Jan 2013 17:46:43 -0200
Subject: [pgbr-geral] Trigger de alterações


Senhores desculpe abusar da bondade de vocês, mas ainda manjo pouco de triggers 
no Postgres.

Tenho a seguinte necessidade:

TabelaA, quando alterada grava as diferenças na TabelaB

Por exemplo a grosso modo no delphi eu faço

for i=0 to FieldsCount-1 do 
begin
  if (Campo[i].NewValue <> Campo[i].OldValue) then
  begin
    Insert na TabelaB
  end
end;

Então a dúvida:

Como contar os campos de uma tabela verificando o Old e New Values (de cada 
campo) pra dar um insert em outra tabela ?

Seria como gravar um log de eventos.


Mais uma vez muito obrigado pela atenção


Marcelo Silva
-------------------------------------------------------------
Desenvolvedor: Delphi, PHP, ASP

Cel: (11) 95052-1407 Tim
Cel: (11) 99693-4251 Vivo
msn: [email protected]

Empresa: Perfil Medicina e Segurança do Trabalho

_______________________________________________ pgbr-geral mailing list 
[email protected] 
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


--------------------------------------------------------------------------------
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a