Fabrízio,
Estou iniciando agora com trigger em postgres e estou com certa dificuldade, seu puder dar uma luz... A trigger abaixo funcionou, mas entrou em um loop, pois qdo atualiza o realizado dia a trigger é acionada novamente, pois está sendo atualizada por registro atualizado. Tem outra forma de fazer, sem entrar no loop?

CREATE TRIGGER  "calHorasDia " BEFORE UPDATE
ON ponto FOR EACH ROW
    EXECUTE PROCEDURE  calHorasDia();

CREATE FUNCTION calHorasDia() RETURNS TRIGGER AS $calHorasDia$
BEGIN
     raise notice 'Valor de NEW.SAIDA_MAT = %', NEW.SAIDA_MAT;
     raise notice 'Valor de OLD.ENTRADA_MAT = %', OLD.ENTRADA_MAT;
     IF (NEW.SAIDA_MAT IS NOT NULL AND OLD.ENTRADA_MAT IS NOT NULL) THEN
         NEW.REALIZADO_DIA := (NEW.SAIDA_MAT-OLD.ENTRADA_MAT);
UPDATE PONTO SET REALIZADO_DIA=NEW.REALIZADO_DIA WHERE ID_PONTO=OLD.ID_PONTO;
         raise notice 'Valor de NEW.REALIZADO_DIA = %', NEW.REALIZADO_DIA;
     END IF;

     IF (OLD.ENTRADA_VESP IS NOT NULL AND NEW.SAIDA_VESP IS NOT NULL) THEN
NEW.REALIZADO_DIA := ((NEW.SAIDA_VESP - OLD.ENTRADA_VESP) + OLD.REALIZADO_DIA);
         raise notice'IF 2';
     END IF;

    RETURN NEW;
END;

Agradeço sugestões.

Fabiano


Em 06/12/2012 20:48, Fabrízio de Royes Mello escreveu:

Em 6 de dezembro de 2012 18:21, Fabiano <[email protected] <mailto:[email protected]>> escreveu:

    Olá Fabrízio,
    Foi um after update.
    CREATE TRIGGER  "calHorasDia " AFTER UPDATE
    ON ponto FOR EACH ROW
        EXECUTE PROCEDURE  calHorasDia();


Então troque para BEFORE UPDATE...
Veja em [1] maiores informações.

[1] http://www.postgresql.org/docs/current/interactive/sql-createtrigger.html

--
Fabrízio de Royes Mello
Consultoria/Coaching PostgreSQL
>> Blog sobre TI: http://fabriziomello.blogspot.com
>> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
>> Twitter: http://twitter.com/fabriziomello



_______________________________________________
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