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