Era isso, faltava o DELETE no CREATE TRIGGER, pondo assim:
CREATE TRIGGER trg_t_incendio
AFTER INSERT OR UPDATE OR DELETE
ON t_incendio
FOR EACH ROW EXECUTE PROCEDURE fun_teste();
Já dispara nas três acções (INSERT, UPDATE e DELETE).
Adicionei esta parte à função para contemplar um UPDATE:
ELSIF (TG_OP = 'UPDATE') THEN
DELETE FROM t_relatorio
WHERE codigo = OLD.codigo;
INSERT INTO t_relatorio(codigo,tipo,nome)
(SELECT i.codigo, a.tipo, a.nome
FROM t_incendio AS i, t_areaprotegida AS a
WHERE (i.geom && a.geom) AND ST_Intersects(i.geom,a.geom)
GROUP BY i.codigo, a.tipo, a.nome
HAVING i.codigo = NEW.codigo);
Perfeito, obrigado pela vossa grande ajuda!
Att,
Eloi Ribeiro
GIS Analyst
39,45º -0,40º
flavors.me/eloiribeiro
No dia 26 de Março de 2012 17:42, Danilo Silva
<[email protected]>escreveu:
> A sua trigger somente é executa com ocorre insert ou update, do jeito que
> está nunca será executada para delete.
>
> Crie outra trigger para o evento de delete.
>
> Att.
>
> Danilo
>
> Em 26 de março de 2012 11:00, Eloi Ribeiro <[email protected]>escreveu:
>
>> No INSERT a função dispara correctamente mas no DELETE já não, alguma
>> razão para isso?
>>
>> DELETE FROM t_incendio WHERE codigo=999999;
>> SELECT * FROM t_incendio;
>> --nada, ok
>>
>> SELECT * FROM t_relatorio;
>> 1;999999;"P. Natural";"Bosque" <- o 'trigger' não disparou para eliminar
>> o registo?
>>
>> Att,
>>
>>
>> Eloi Ribeiro
>> GIS Analyst
>> 39,45º -0,40º
>> flavors.me/eloiribeiro
>>
>>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral