Mercurial > gemma
diff schema/gemma.sql @ 4155:552ea22ed266 improvepdf
merge default into improvepdf
author | Thomas Junk <thomas.junk@intevation.de> |
---|---|
date | Fri, 02 Aug 2019 13:30:29 +0200 |
parents | ec8438712447 |
children | d3fb2f37380b |
line wrap: on
line diff
--- a/schema/gemma.sql Thu Aug 01 12:48:33 2019 +0200 +++ b/schema/gemma.sql Fri Aug 02 13:30:29 2019 +0200 @@ -103,7 +103,7 @@ USING DETAIL = format('No matching gauge %s found.', isrs_AsText(referenced_gauge::isrs)), - ERRCODE = 23505, + ERRCODE = 23503, SCHEMA = TG_TABLE_SCHEMA, TABLE = TG_TABLE_NAME, COLUMN = TG_ARGV[0], @@ -141,7 +141,7 @@ USING DETAIL = format('No matching gauge %s found.', isrs_AsText(referenced_gauge::isrs)), - ERRCODE = 23505, + ERRCODE = 23503, SCHEMA = TG_TABLE_SCHEMA, TABLE = TG_TABLE_NAME, COLUMN = TG_ARGV[0], @@ -179,7 +179,7 @@ USING DETAIL = format('No matching bottleneck %s for %s found.', referenced_bottleneck_id, new_tstz), - ERRCODE = 23505, + ERRCODE = 23503, SCHEMA = TG_TABLE_SCHEMA, TABLE = TG_TABLE_NAME, COLUMN = TG_ARGV[0], @@ -649,9 +649,6 @@ id int PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, bottleneck_id varchar NOT NULL, validity tstzrange NOT NULL CHECK (NOT isempty(validity)), - UNIQUE (bottleneck_id, validity), - EXCLUDE USING GiST (bottleneck_id WITH =, validity WITH &&) - DEFERRABLE INITIALLY DEFERRED, gauge_location isrs NOT NULL, objnam varchar, nobjnm varchar, @@ -673,7 +670,12 @@ -- XXX: Also an attribut of sounding result? date_info timestamp with time zone NOT NULL, source_organization varchar NOT NULL, - staging_done boolean NOT NULL DEFAULT false + staging_done boolean NOT NULL DEFAULT false, + UNIQUE (bottleneck_id, validity, staging_done), + EXCLUDE USING GiST (bottleneck_id WITH =, + validity WITH &&, + CAST(staging_done AS int) WITH =) + DEFERRABLE INITIALLY DEFERRED ) CREATE CONSTRAINT TRIGGER waterway_bottlenecks_reference_gauge AFTER INSERT OR UPDATE OF gauge_location ON bottlenecks @@ -881,9 +883,13 @@ tmp RECORD; BEGIN FOR tmp IN - SELECT * FROM import.track_imports WHERE import_id = imp_id AND NOT deletion + SELECT relation, array_agg(key) AS keys + FROM import.track_imports + WHERE import_id = imp_id AND NOT deletion + GROUP BY relation LOOP - EXECUTE format('DELETE FROM %s WHERE id = $1', tmp.relation) USING tmp.key; + EXECUTE format('DELETE FROM %s WHERE id = ANY($1)', tmp.relation) + USING tmp.keys; END LOOP; END; $$