X-Git-Url: https://dev.renevier.net/?p=syj.git;a=blobdiff_plain;f=scripts%2Fschema.postgres.sql;h=bcbfef3e07c364f34854338fc2718d7113c8f189;hp=cbb12a6ca879411c25416dd47a87ec0a944dafe0;hb=c06c7fd6e6f26d31abb8d7c9a9f9e3f2d5b27d5c;hpb=9e25156ae46eb12f1801f503c7fdf51534d1c1a9 diff --git a/scripts/schema.postgres.sql b/scripts/schema.postgres.sql index cbb12a6..bcbfef3 100644 --- a/scripts/schema.postgres.sql +++ b/scripts/schema.postgres.sql @@ -102,29 +102,9 @@ CREATE TABLE paths ( geom GEOGRAPHY (LINESTRING, 4326) NOT NULL, creator INTEGER REFERENCES users ON DELETE SET NULL, creator_ip INET NOT NULL, - title VARCHAR(40), + title VARCHAR(160), last_update TIMESTAMP NOT NULL DEFAULT NOW(), 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;