Hola comunidad, espero que se encuentren todos bien, acudo a ustedes en busca de ayuda, estoy intentando realizar estos triggers pero no he podido, por favor ayúdenme.
Ya tengo la extension a postgis y el SRID es metrico
estoy utilizando Postgres
Tengo una tabla de zonificación de geometría tipo polígono con una columna llamada área_iluminada, también tengo una tabla de alumbrado_publico de geometría tipo punto con una columna llamada cobertura. Quiero crear un disparador que almacene en la columna Illuminated_area el área que se superpone entre los polígonos de zonificación y la unión de los polígonos resultantes del buffer alumbrado_publico cuya distancia del buffer es la cobertura. teniendo en cuenta que puedo modificar la posición de los puntos o la cobertura por lo que debe ser actualizable.
he llegado al siguinte codigo pero no funciona, area_iluminada sigue dando null:
Código SQL
[-]
Función para calcular el área iluminada y actualizar zonificacion
CREATE OR REPLACE FUNCTION calcular_area_iluminada() RETURNS TRIGGER AS $$
BEGIN
-- Actualizar el área iluminada en zonificacion
UPDATE zonificacion z
SET area_iluminada = ST_Area(ST_Intersection(z.geom, buffer_alum.geom))
FROM (
SELECT ST_Union(ST_Buffer(geom, cobertura)) AS geom
FROM alumbrado_publico
) AS buffer_alum
WHERE ST_Intersects(z.geom, buffer_alum.geom);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
-- Trigger para INSERT en alumbrado_publico
CREATE TRIGGER calcular_area_iluminada_insert
AFTER INSERT ON alumbrado_publico
FOR EACH ROW
EXECUTE FUNCTION calcular_area_iluminada();
-- Trigger para UPDATE en alumbrado_publico
CREATE TRIGGER calcular_area_iluminada_update
AFTER UPDATE ON alumbrado_publico
FOR EACH ROW
EXECUTE FUNCTION calcular_area_iluminada();
-- Trigger para DELETE en alumbrado_publico
CREATE TRIGGER calcular_area_iluminada_delete
AFTER DELETE ON alumbrado_publico
FOR EACH ROW
EXECUTE FUNCTION calcular_area_iluminada();