Change delivery_part triggers to raise exception on invalid kgnr/hkid combination
This commit is contained in:
@ -526,29 +526,35 @@ CREATE TABLE delivery_part (
|
|||||||
) STRICT;
|
) STRICT;
|
||||||
|
|
||||||
CREATE TRIGGER t_delivery_part_i
|
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
|
WHEN NEW.kgnr IS NOT NULL
|
||||||
BEGIN
|
BEGIN
|
||||||
UPDATE delivery_part SET hkid = (
|
SELECT RAISE(ABORT, 'Invalid kgnr and hkid combination')
|
||||||
SELECT hkid
|
WHERE 0 = (
|
||||||
FROM wb_kg wk
|
SELECT COUNT(*) FROM wb_kg wk
|
||||||
JOIN AT_kg k ON wk.kgnr = k.kgnr
|
JOIN AT_kg k ON wk.kgnr = k.kgnr
|
||||||
JOIN wb_gem wg ON wg.gkz = k.gkz
|
JOIN wb_gem wg ON wg.gkz = k.gkz
|
||||||
WHERE wk.kgnr = NEW.kgnr
|
LEFT JOIN wine_origin wo1 ON wg.hkid = wo1.hkid
|
||||||
) WHERE (year, did, dpnr) = (NEW.year, NEW.did, NEW.dpnr);
|
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;
|
END;
|
||||||
|
|
||||||
CREATE TRIGGER t_delivery_part_u
|
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
|
WHEN NEW.kgnr IS NOT NULL
|
||||||
BEGIN
|
BEGIN
|
||||||
UPDATE delivery_part SET hkid = (
|
SELECT RAISE(ABORT, 'Invalid kgnr and hkid combination')
|
||||||
SELECT hkid
|
WHERE 0 = (
|
||||||
FROM wb_kg wk
|
SELECT COUNT(*) FROM wb_kg wk
|
||||||
JOIN AT_kg k ON wk.kgnr = k.kgnr
|
JOIN AT_kg k ON wk.kgnr = k.kgnr
|
||||||
JOIN wb_gem wg ON wg.gkz = k.gkz
|
JOIN wb_gem wg ON wg.gkz = k.gkz
|
||||||
WHERE wk.kgnr = NEW.kgnr
|
LEFT JOIN wine_origin wo1 ON wg.hkid = wo1.hkid
|
||||||
) WHERE (year, did, dpnr) = (NEW.year, NEW.did, NEW.dpnr);
|
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;
|
END;
|
||||||
|
|
||||||
CREATE TABLE delivery_part_attribute (
|
CREATE TABLE delivery_part_attribute (
|
||||||
|
Reference in New Issue
Block a user