Escrever triggers

De Dados Abertos
Ir para: navegação, pesquisa

Criar uma nova tabela:

CREATE TABLE edificio AS
SELECT name, building, osm_user, way
FROM planet_osm_polygon
WHERE building IS NOT NULL
ALTER TABLE edificio ADD gid serial PRIMARY KEY;
ALTER TABLE edificio ADD valor DOUBLE PRECISION;
CREATE OR REPLACE FUNCTION computes_valor()
  RETURNS TRIGGER AS
$BODY$
   BEGIN      
       NEW.valor := st_area(NEW.way) * 15; 
       RETURN NEW;
   END;
$BODY$
   LANGUAGE 'plpgsql'
 
CREATE TRIGGER update_valor
  BEFORE INSERT OR UPDATE
  ON edificio
  FOR EACH ROW
  EXECUTE PROCEDURE computes_valor()

Acionar o trigger para todas as linhas: vai calcular o valor para todas as linhas.

UPDATE edificio SET name = name

Screenshot from 2015-11-26 15-18-46.png