X-Git-Url: https://dev.renevier.net/?p=syj.git;a=blobdiff_plain;f=scripts%2Fschema.postgres.sql;fp=scripts%2Fschema.postgres.sql;h=ea8777d1b07e23a2a4ddfd39d037762247c79ed7;hp=cbb12a6ca879411c25416dd47a87ec0a944dafe0;hb=e534c17db2f3986751f4a96900e4aaae56d34873;hpb=ccec698be8d221c48a6590af099d4390ee0a31e6 diff --git a/scripts/schema.postgres.sql b/scripts/schema.postgres.sql index cbb12a6..ea8777d 100644 --- a/scripts/schema.postgres.sql +++ b/scripts/schema.postgres.sql @@ -107,24 +107,4 @@ CREATE TABLE paths ( urlcomp VARCHAR(20) UNIQUE CHECK (urlcomp ~ '^[a-z][a-zA-Z0-9_]*$') -- ~: matches regular expression; case sensitive ); -CREATE OR REPLACE FUNCTION tg_paths_bu() RETURNS TRIGGER AS $$ -DECLARE res INTEGER; -BEGIN - SELECT INTO res COUNT(*) FROM paths WHERE ST_AsBinary(geom) = ST_AsBinary(NEW.geom) AND creator = NEW.creator AND id != NEW.id; - -- unique (geom, creator) constraint will not work: first because of postgis - -- #541; then because equality is checked by comparing bbox instead of real - -- geometries. So, we implement that constraint in a trigger - IF res >= 1 THEN - RAISE 'duplicate key paths_geom_key' using ERRCODE = 'unique_violation'; - ELSE - -- update last_update TIMESTAMP - NEW.last_update = NOW(); - RETURN NEW; - END IF; -END; -$$ LANGUAGE PLPGSQL; - -DROP TRIGGER IF EXISTS tg_paths_bu ON paths; -CREATE TRIGGER tg_paths_bu BEFORE INSERT OR UPDATE ON paths FOR EACH ROW EXECUTE PROCEDURE tg_paths_bu(); - COMMIT;