# HG changeset patch # User Tom Gottfried # Date 1477933785 -3600 # Node ID 70b51893f15bc9a4e6afafbd7f0c5736ab78ca24 # Parent f9328849a53c243d9f85aaa09f7abc237eb24cf3 Fix UNIQUE-constraint and respective validation. Btw. improved readability of DEFAULT definition. diff -r f9328849a53c -r 70b51893f15b db_schema/lada_schema.sql --- a/db_schema/lada_schema.sql Mon Oct 31 17:14:49 2016 +0100 +++ b/db_schema/lada_schema.sql Mon Oct 31 18:09:45 2016 +0100 @@ -192,7 +192,10 @@ CREATE TABLE probe ( id serial PRIMARY KEY, - id_alt character varying(20) DEFAULT (('sss'::text || lpad(((nextval('land.probe_probe_id_seq'::regclass))::character varying)::text, 12, '0'::text)) || 'Y'::text) NOT NULL, + id_alt character varying(20) UNIQUE NOT NULL + DEFAULT 'sss' + || lpad(nextval('land.probe_probe_id_seq')::varchar, 12, '0') + || 'Y', test boolean DEFAULT false NOT NULL, mst_id character varying(5) NOT NULL REFERENCES stammdaten.mess_stelle, labor_mst_id character varying(5) NOT NULL REFERENCES stammdaten.mess_stelle, @@ -214,7 +217,7 @@ solldatum_beginn timestamp without time zone, solldatum_ende timestamp without time zone, tree_modified timestamp without time zone DEFAULT now(), - UNIQUE (mst_id, hauptproben_nr, id_alt), + UNIQUE (mst_id, hauptproben_nr), CHECK(solldatum_beginn <= solldatum_ende) ); CREATE TRIGGER letzte_aenderung_probe BEFORE UPDATE ON probe FOR EACH ROW EXECUTE PROCEDURE update_letzte_aenderung(); diff -r f9328849a53c -r 70b51893f15b src/main/java/de/intevation/lada/validation/rules/probe/UniqueHauptprobenNr.java --- a/src/main/java/de/intevation/lada/validation/rules/probe/UniqueHauptprobenNr.java Mon Oct 31 17:14:49 2016 +0100 +++ b/src/main/java/de/intevation/lada/validation/rules/probe/UniqueHauptprobenNr.java Mon Oct 31 18:09:45 2016 +0100 @@ -42,6 +42,7 @@ repo.entityManager("land"), Probe.class); builder.and("hauptprobenNr", probe.getHauptprobenNr()); + builder.and("mstId", probe.getMstId()); Response response = repo.filter(builder.getQuery(), "land"); if (!((List)response.getData()).isEmpty()) { Probe found = ((List)response.getData()).get(0);