Вот так я представляю себе искомый триггер:
Код: Выделить всё
CREATE TRIGGER enforce_topology
    BEFORE INSERT OR UPDATE OF the_geom ON settlement_polygon
    FOR EACH ROW
    WHEN (EXISTS(ST_Intersects(NEW.the_geom, OLD.the_geom) 
                 and NEW.gid <> OLD.giid 
                 and not   ST_Touches(NEW.the_geom, OLD.the_geom)))
EXECUTE PROCEDURE on insert restrict, on update restrict;
Код: Выделить всё
ERROR:  syntax error at or near "on"
LINE 5: EXECUTE PROCEDURE on insert restrict, on update restrict;
                          ^
********** Error **********Хорошего (популярного) описания работы триггеров в Postgre/PostGIS, к сожалению, не нашёл, поэтому плохо представляю, какие основные команды используются в триггерах postgres. Если знаете такое - ткните пожалуйста.

