-- schema version 25 to 26 CREATE TABLE delivery_schedule ( year INTEGER NOT NULL, dsnr INTEGER NOT NULL, date TEXT NOT NULL CHECK (date LIKE year || '-%' AND date REGEXP '^[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$'), zwstid TEXT NOT NULL, description TEXT NOT NULL, max_weight INTEGER, ancmt_from INTEGER, ancmt_to INTEGER, CONSTRAINT pk_delivery_schedule PRIMARY KEY (year, dsnr), CONSTRAINT fk_delivery_schedule_season FOREIGN KEY (year) REFERENCES season (year) ON UPDATE CASCADE ON DELETE RESTRICT, CONSTRAINT fk_delivery_schedule_branch FOREIGN KEY (zwstid) REFERENCES branch (zwstid) ON UPDATE CASCADE ON DELETE RESTRICT ) STRICT; CREATE TABLE delivery_schedule_wine_variety ( year INTEGER NOT NULL, dsnr INTEGER NOT NULL, sortid TEXT NOT NULL, priority INTEGER NOT NULL DEFAULT 1, CONSTRAINT pk_delivery_schedule_wine_variety PRIMARY KEY (year, dsnr, sortid), CONSTRAINT fk_delivery_schedule_wine_variety_delivery_schedule FOREIGN KEY (year, dsnr) REFERENCES delivery_schedule (year, dsnr) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT fk_delivery_schedule_wine_variety_wine_variety FOREIGN KEY (sortid) REFERENCES wine_variety (sortid) ON UPDATE CASCADE ON DELETE RESTRICT ) STRICT; CREATE TABLE delivery_announcement ( year INTEGER NOT NULL, dsnr INTEGER NOT NULL, mgnr INTEGER NOT NULL, sortid TEXT NOT NULL, weight INTEGER NOT NULL, type TEXT NOT NULL, ctime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), mtime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), CONSTRAINT pk_delivery_announcement PRIMARY KEY (year, dsnr, mgnr, sortid), CONSTRAINT fk_delivery_announcement_delivery_schedule FOREIGN KEY (year, dsnr) REFERENCES delivery_schedule (year, dsnr) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT fk_delivery_announcement_member FOREIGN KEY (mgnr) REFERENCES member (mgnr) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT fk_delivery_announcement_wine_variety FOREIGN KEY (sortid) REFERENCES wine_variety (sortid) ON UPDATE CASCADE ON DELETE RESTRICT ) STRICT; CREATE TRIGGER t_delivery_announcement_i_ctime AFTER INSERT ON delivery_announcement FOR EACH ROW WHEN NEW.ctime != UNIXEPOCH() BEGIN UPDATE delivery_announcement SET ctime = UNIXEPOCH() WHERE (year, dsnr, mgnr, sortid) = (NEW.year, NEW.dsnr, NEW.mgnr, NEW.sortid); END; CREATE TRIGGER t_delivery_announcement_u_ctime BEFORE UPDATE ON delivery_announcement FOR EACH ROW WHEN OLD.ctime != NEW.ctime BEGIN SELECT RAISE(ABORT, 'It is not allowed to change ctime'); END; CREATE TRIGGER t_delivery_announcement_i_mtime AFTER INSERT ON delivery_announcement FOR EACH ROW WHEN NEW.mtime != UNIXEPOCH() BEGIN UPDATE delivery_announcement SET mtime = UNIXEPOCH() WHERE (year, dsnr, mgnr, sortid) = (NEW.year, NEW.dsnr, NEW.mgnr, NEW.sortid); END; CREATE TRIGGER t_delivery_announcement_u_mtime AFTER UPDATE ON delivery_announcement FOR EACH ROW WHEN NEW.mtime != UNIXEPOCH() BEGIN UPDATE delivery_announcement SET mtime = UNIXEPOCH() WHERE (year, dsnr, mgnr, sortid) = (NEW.year, NEW.dsnr, NEW.mgnr, NEW.sortid); END;