diff --git a/sql/sample.sql b/sql/sample.sql index 5cc14ec..980b8b6 100644 --- a/sql/sample.sql +++ b/sql/sample.sql @@ -135,7 +135,7 @@ SELECT k.kgnr, 2 FROM wb_gem wg LEFT JOIN AT_gem g ON g.gkz = wg.gkz LEFT JOIN AT_kg k ON k.gkz = g.gkz -WHERE hkid = 'WLWV' AND g.gkz / 100 IN (308, 316) AND k.name IN ('Bockfließ', 'Großengersdorf'); +WHERE hkid = 'WLWV' AND g.gkz / 100 IN (308, 316) AND k.name IN ('Bockfließ', 'Großengersdorf', 'Wolkersdorf'); INSERT INTO wb_kg SELECT k.kgnr, 3 diff --git a/sql/v01/01.create.sql b/sql/v01/01.create.sql index 54f1744..90ec2d6 100644 --- a/sql/v01/01.create.sql +++ b/sql/v01/01.create.sql @@ -140,8 +140,8 @@ CREATE TABLE wine_quality ( origin_level INTEGER NOT NULL, name TEXT NOT NULL, - from_kmw INTEGER DEFAULT NULL, - to_kmw INTEGER DEFAULT NULL, + from_kmw REAL DEFAULT NULL, + to_kmw REAL DEFAULT NULL, CONSTRAINT pk_wine_quality PRIMARY KEY (qualid) ) STRICT; @@ -378,8 +378,8 @@ CREATE TABLE modifier ( abs INTEGER, rel INTEGER, - standard INTEGER NOT NULL CHECK (standard IN (0, 1)), - quick_select INTEGER NOT NULL CHECK (quick_select IN (0, 1)), + standard INTEGER NOT NULL CHECK (standard IN (TRUE, FALSE)), + quick_select INTEGER NOT NULL CHECK (quick_select IN (TRUE, FALSE)), CONSTRAINT pk_modifier PRIMARY KEY (year, mnr), CONSTRAINT fk_modifier_season FOREIGN KEY (year) REFERENCES season (year) @@ -423,25 +423,76 @@ BEGIN END; CREATE TABLE delivery_part ( - year INTEGER NOT NULL, - did INTEGER NOT NULL, - dpnr INTEGER NOT NULL, + year INTEGER NOT NULL, + did INTEGER NOT NULL, + dpnr INTEGER NOT NULL, - weight INTEGER NOT NULL, - c_kmw INTEGER NOT NULL, + sortid TEXT NOT NULL, + attrid TEXT DEFAULT NULL, - gerebelt INTEGER NOT NULL, - handwiegung INTEGER NOT NULL, - spätleseüberprüfung INTEGER NOT NULL, + weight INTEGER NOT NULL, + kmw REAL NOT NULL, - comment TEXT DEFAULT NULL, + hkid TEXT NOT NULL, + kgnr INTEGER DEFAULT NULL, + rdnr INTEGER DEFAULT NULL, + + gerebelt INTEGER NOT NULL CHECK (gerebelt IN (TRUE, FALSE)), + handwiegung INTEGER NOT NULL CHECK (handwiegung IN (TRUE, FALSE)), + spätleseüberprüfung INTEGER NOT NULL CHECK (spätleseüberprüfung IN (TRUE, FALSE)) DEFAULT FALSE, + + temperature REAL DEFAULT NULL, + acid REAL DEFAULT NULL, + comment TEXT DEFAULT NULL, + waagentext TEXT, CONSTRAINT pk_delivery_part PRIMARY KEY (year, did, dpnr), CONSTRAINT fk_delivery_part_delivery FOREIGN KEY (year, did) REFERENCES delivery (year, did) ON UPDATE CASCADE - ON DELETE CASCADE + ON DELETE CASCADE, + CONSTRAINT fk_delivery_part_wine_variety FOREIGN KEY (sortid) REFERENCES wine_variety (sortid) + ON UPDATE CASCADE + ON DELETE RESTRICT, + CONSTRAINT fk_delivery_part_wine_attribute FOREIGN KEY (attrid) REFERENCES wine_attribute (attrid) + ON UPDATE CASCADE + ON DELETE RESTRICT, + CONSTRAINT fk_delivery_part_wine_origin FOREIGN KEY (hkid) REFERENCES wine_origin (hkid) + ON UPDATE CASCADE + ON DELETE RESTRICT, + CONSTRAINT fk_delivery_part_wb_kg FOREIGN KEY (kgnr) REFERENCES wb_kg (kgnr) + ON UPDATE CASCADE + ON DELETE RESTRICT, + CONSTRAINT fk_delivery_part_wb_rd FOREIGN KEY (kgnr, rdnr) REFERENCES wb_rd (kgnr, rdnr) + ON UPDATE CASCADE + ON DELETE RESTRICT ) STRICT; +CREATE TRIGGER t_delivery_part_i + AFTER 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 + 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); +END; + +CREATE TRIGGER t_delivery_part_u + AFTER UPDATE OF kgnr ON delivery_part FOR EACH ROW +WHEN NEW.kgnr IS NOT NULL +BEGIN + UPDATE delivery_part SET hkid = ( + SELECT hkid + 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); +END; + CREATE TABLE delivery_part_modifier ( year INTEGER NOT NULL, did INTEGER NOT NULL, diff --git a/sql/v01/03.base.sql b/sql/v01/03.base.sql index 74c8b08..fb3b908 100644 --- a/sql/v01/03.base.sql +++ b/sql/v01/03.base.sql @@ -31,10 +31,10 @@ INSERT INTO AT_bundesland VALUES INSERT INTO wine_quality VALUES ('WEI', 0, 'Wein', NULL, NULL), -('RSW', 0, 'Rebsortenwein', 115, 140), -('LDW', 1, 'Landwein', 140, 150), -('QUW', 3, 'Qualitätswein', 150, 170), -('KAB', 3, 'Kabinett', 170, NULL), +('RSW', 0, 'Rebsortenwein', 11.5, 14.0), +('LDW', 1, 'Landwein', 14.0, 15.0), +('QUW', 3, 'Qualitätswein', 15.0, 17.0), +('KAB', 3, 'Kabinett', 17.0, NULL), ('SPL', 3, 'Spätlese', NULL, NULL); --INSERT INTO wine_quality (qualid, name)