diff --git a/sql/v01/10.create.sql b/sql/v01/10.create.sql index 4265a96..e9bac4b 100644 --- a/sql/v01/10.create.sql +++ b/sql/v01/10.create.sql @@ -526,29 +526,35 @@ CREATE TABLE delivery_part ( ) STRICT; CREATE TRIGGER t_delivery_part_i - AFTER INSERT ON delivery_part FOR EACH ROW + BEFORE INSERT ON delivery_part FOR EACH ROW WHEN NEW.kgnr IS NOT NULL BEGIN - UPDATE delivery_part SET hkid = ( - SELECT hkid - FROM wb_kg wk + SELECT RAISE(ABORT, 'Invalid kgnr and hkid combination') + WHERE 0 = ( + SELECT COUNT(*) FROM wb_kg wk JOIN AT_kg k ON wk.kgnr = k.kgnr JOIN wb_gem wg ON wg.gkz = k.gkz - WHERE wk.kgnr = NEW.kgnr - ) WHERE (year, did, dpnr) = (NEW.year, NEW.did, NEW.dpnr); + LEFT JOIN wine_origin wo1 ON wg.hkid = wo1.hkid + LEFT JOIN wine_origin wo2 ON wo1.parent_hkid = wo2.hkid + LEFT JOIN wine_origin wo3 ON wo2.parent_hkid = wo3.hkid + LEFT JOIN wine_origin wo4 ON wo3.parent_hkid = wo4.hkid + WHERE wk.kgnr = NEW.kgnr AND NEW.hkid IN (wo1.hkid, wo2.hkid, wo3.hkid, wo4.hkid)); END; CREATE TRIGGER t_delivery_part_u - AFTER UPDATE OF kgnr ON delivery_part FOR EACH ROW + BEFORE UPDATE ON delivery_part FOR EACH ROW WHEN NEW.kgnr IS NOT NULL BEGIN - UPDATE delivery_part SET hkid = ( - SELECT hkid - FROM wb_kg wk + SELECT RAISE(ABORT, 'Invalid kgnr and hkid combination') + WHERE 0 = ( + SELECT COUNT(*) FROM wb_kg wk JOIN AT_kg k ON wk.kgnr = k.kgnr JOIN wb_gem wg ON wg.gkz = k.gkz - WHERE wk.kgnr = NEW.kgnr - ) WHERE (year, did, dpnr) = (NEW.year, NEW.did, NEW.dpnr); + LEFT JOIN wine_origin wo1 ON wg.hkid = wo1.hkid + LEFT JOIN wine_origin wo2 ON wo1.parent_hkid = wo2.hkid + LEFT JOIN wine_origin wo3 ON wo2.parent_hkid = wo3.hkid + LEFT JOIN wine_origin wo4 ON wo3.parent_hkid = wo4.hkid + WHERE wk.kgnr = NEW.kgnr AND NEW.hkid IN (wo1.hkid, wo2.hkid, wo3.hkid, wo4.hkid)); END; CREATE TABLE delivery_part_attribute (