Hi, NEW is a variable made available by the system when creating a trigger. It represents the row of values that will be updated or inserted. More information here:
http://www.postgresql.org/docs/8.4/static/plpgsql-trigger.html Nicolas 2009/11/30 Daniel Grum <[email protected]>: > Hi, > > I want to create points(buildings) with a WFS-T in mapbender and before this > was done there must be the possibility to control if there is another > point-(building) or linestring-(water) geometry around the point...if there > is another geometry the WFT-T should stop and write an ERROR message: "You > are not able to create a point(building) there!" > New points were digitized,with digitize tool in mapbender, but it don't > control if there is a point/line at this area where the new point will be > digitized! > > Do I have to create a PostGIS SQL script to stop the digitizing of an new > point? > I found the "mod_digitize_messages.php" whre I can create massages for > several actions, but I don't know how I can create the "control-action" that > control if there is a point in a defined area or not?! > > Later I want to create a similar trigger function that control if the user > have enough ressources to build the new building-->so this trigger function > have to work at first! > > I wrote this in the mapbender mailing list too, with now answer yet! > > Are there any ideas?? > > The triggerfuntion I used for this now is: > > "CREATE OR REPLACE FUNCTION my_trigger_function() RETURNS trigger AS > $$ > DECLARE > -- declare variables > current_row RECORD; > BEGIN > -- get all existing geometries which intersect the new geometry > NEW.the_geom > -- around the new geometry is a buffer of 50 meters (or whatever your unit > is) > FOR current_row IN > SELECT * > FROM public.holzfaeller t, public.erzmine e, public.wohnhaus w, > public.steinbruch s, public.kaserne k, public.saegerwerk r > WHERE ST_Intersects(ST_Buffer(NEW.the_geom, 50),t.the_geom) AND > ST_Intersects(ST_Buffer(NEW.the_geom, 50),e.the_geom) AND > ST_Intersects(ST_Buffer(NEW.the_geom, 50),w.the_geom) AND > ST_Intersects(ST_Buffer(NEW.the_geom, 50),s.the_geom) AND > ST_Intersects(ST_Buffer(NEW.the_geom, 50),k.the_geom) AND > ST_Intersects(ST_Buffer(NEW.the_geom, 50),r.the_geom) > > LOOP > -- intersection found > RAISE EXCEPTION 'my error message'; > END LOOP; > > -- no intersection, new geometry will be inserted > RETURN NEW; > END; > $$ LANGUAGE 'plpgsql'; > > And in every table-->holzfaeller, erzmine .... there is a trigger: > > "CREATE TRIGGER my_trigger > BEFORE INSERT OR UPDATE > ON holzfaeller > FOR EACH ROW > EXECUTE PROCEDURE my_trigger_function();" > > I get this with the help of an other mapbender user! > But what can be the variable "NEW" in the trigger function -->Where come > this from, Where was this defined? > > Please help me, every idea can bring me to the solution. > > --daniel > _______________________________________________ > postgis-users mailing list > [email protected] > http://postgis.refractions.net/mailman/listinfo/postgis-users > _______________________________________________ postgis-users mailing list [email protected] http://postgis.refractions.net/mailman/listinfo/postgis-users
