jvenegasperu . escribió: > Si yo uso la regla usando pgadmin funciona bien y no me permite insertar > una nueva geometria de tipo punto cuando se trata de las mismas coordenadas. > > Esta es la regla > > CREATE OR REPLACE RULE ed_ap_valvula AS > ON INSERT TO ap_valvula > WHERE 0 <> (( SELECT count(*) AS count > FROM ap_valvula > WHERE ap_valvula.the_geom ~= new.the_geom)) > DO INSTEAD NOTHING;
Lo que realmente te hace falta, creo, es una restriccion EXCLUDE, que debería ser algo así: ALTER TABLE ap_valvula ADD CONSTRAINT no_misma_geom EXCLUDE (the_geom WITH ~=); Quizás alguien pueda proveer un ejemplo más completo (yo no tengo postgis disponible aquí); pero la idea es que no usas triggers ni reglas sino que la restricción misma se hace cargo del problema. Ahora, tu regla no *impide* que se inserte el objeto (yo esperaría que eso arrojara un error), sino que más bien no inserta nada cuando el insert va a una geometría donde ya hay un objeto. Usando EXCLUDE va a arrojar un error. Pero podrías atraparlo usando plpgsql y un bloque exception, que de todas formas va a ser más simple de implementar que una regla o un trigger ... -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services