Olá a todos,

Estou numa maquina com Ubuntu Desktop 10.04, PostgreSQL 8.4 e PostGIS 1.5.
e não consigo fazer com que um trigger me funcione.
Vou tentar reproduzir o erro aqui:

CREATE TABLE t_incendio (gid serial PRIMARY KEY, codigo bigint);
SELECT AddGeometrycolumn
('public','t_incendio','geom',23030,'MULTIPOLYGON',2);

CREATE TABLE t_areaprotegida (gid serial PRIMARY KEY, tipo varchar(10),
nome varchar(10));
SELECT AddGeometrycolumn
('public','t_areaprotegida','geom',23030,'MULTIPOLYGON',2);

CREATE TABLE t_relatorio (id serial PRIMARY KEY, codigo bigint, tipo
varchar(10), nome varchar(10));

CREATE OR REPLACE FUNCTION fun_teste()
  RETURNS trigger AS
$BODY$
    BEGIN
        IF (TG_OP = 'INSERT') THEN
            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);
        ELSIF (TG_OP = 'DELETE') THEN
            DELETE FROM t_relatorio
                WHERE codigo = OLD.codigo;
        END IF;
RETURN NEW;
    END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;

CREATE TRIGGER trg_t_incendio BEFORE INSERT OR UPDATE ON t_incendio FOR
EACH ROW EXECUTE PROCEDURE fun_teste();

INSERT INTO t_areaprotegida (tipo, nome, geom)
VALUES ('P. Natural', 'Bosque', ST_GeomFromText('MULTIPOLYGON(((670000
4350000,680000 4350000,680000 4340000,670000 4340000,670000
4350000)))',23030));
SELECT * FROM t_areaprotegida;
1;"P. Natural";"Bosque";"0106000020F65900000100000..."

INSERT INTO t_incendio (codigo, geom)
VALUES (999999, ST_GeomFromText('MULTIPOLYGON(((675000 4350000,685000
4350000,685000 4340000,675000 4340000,675000 4350000)))',23030));
SELECT * FROM t_incendio;
1;999999;"0106000020F65900000100000001030000000100000..."

SELECT * FROM t_relatorio;
Nada!

Esta é a consulta que está na funçao fun_teste():
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;
999999;"P. Natural";"Bosque"

O que é que estou a fazer mal?
Obrigado. Cumprimentos,


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

Responder a