From 6aceebde0e783569844af577662d68494383987e Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Tue, 3 Jun 2025 20:46:34 +0200 Subject: [PATCH] database: Add itime and xtime --- sql/v01/11.create.client.sql | 4 ++ sql/v01/12.create.season.sql | 6 ++ sql/v01/13.create.payment.sql | 4 ++ sql/v01/20.create.timestamp-trigger.sql | 78 ++++++++++++++++--------- sql/v01/99.schema_version.sql | 2 +- 5 files changed, 65 insertions(+), 29 deletions(-) diff --git a/sql/v01/11.create.client.sql b/sql/v01/11.create.client.sql index 0eb9193..e35a6ec 100644 --- a/sql/v01/11.create.client.sql +++ b/sql/v01/11.create.client.sql @@ -112,6 +112,8 @@ CREATE TABLE member ( comment TEXT DEFAULT NULL, ctime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), mtime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), + xtime INTEGER DEFAULT NULL, + itime INTEGER DEFAULT NULL, CONSTRAINT pk_member PRIMARY KEY (mgnr), CONSTRAINT fk_member_member FOREIGN KEY (predecessor_mgnr) REFERENCES member (mgnr) @@ -190,6 +192,8 @@ CREATE TABLE area_commitment ( comment TEXT DEFAULT NULL, ctime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), mtime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), + xtime INTEGER DEFAULT NULL, + itime INTEGER DEFAULT NULL, CONSTRAINT pk_area_commitment PRIMARY KEY (fbnr), CONSTRAINT fk_area_commitment_member FOREIGN KEY (mgnr) REFERENCES member (mgnr) diff --git a/sql/v01/12.create.season.sql b/sql/v01/12.create.season.sql index d94c3e7..89c1edc 100644 --- a/sql/v01/12.create.season.sql +++ b/sql/v01/12.create.season.sql @@ -84,6 +84,8 @@ CREATE TABLE delivery_announcement ( type TEXT NOT NULL, ctime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), mtime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), + xtime INTEGER DEFAULT NULL, + itime INTEGER DEFAULT NULL, 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) @@ -129,6 +131,8 @@ CREATE TABLE delivery ( comment TEXT DEFAULT NULL, ctime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), mtime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), + xtime INTEGER DEFAULT NULL, + itime INTEGER DEFAULT NULL, CONSTRAINT pk_delivery PRIMARY KEY (year, did), CONSTRAINT sk_delivery_1 UNIQUE (date, zwstid, lnr), @@ -187,6 +191,8 @@ CREATE TABLE delivery_part ( comment TEXT DEFAULT NULL, ctime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), mtime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), + xtime INTEGER DEFAULT NULL, + itime INTEGER DEFAULT NULL, CONSTRAINT pk_delivery_part PRIMARY KEY (year, did, dpnr), CONSTRAINT fk_delivery_part_delivery FOREIGN KEY (year, did) REFERENCES delivery (year, did) diff --git a/sql/v01/13.create.payment.sql b/sql/v01/13.create.payment.sql index 2f0dc4c..f3797a1 100644 --- a/sql/v01/13.create.payment.sql +++ b/sql/v01/13.create.payment.sql @@ -28,6 +28,8 @@ CREATE TABLE payment_variant ( data TEXT NOT NULL, ctime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), mtime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), + xtime INTEGER DEFAULT NULL, + itime INTEGER DEFAULT NULL, CONSTRAINT pk_payment PRIMARY KEY (year, avnr) ) STRICT; @@ -189,6 +191,8 @@ CREATE TABLE credit ( ctime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), mtime INTEGER NOT NULL DEFAULT (UNIXEPOCH()), + xtime INTEGER DEFAULT NULL, + itime INTEGER DEFAULT NULL, CONSTRAINT pk_credit PRIMARY KEY (year, tgnr), CONSTRAINT sk_credit_payment_member UNIQUE (year, avnr, mgnr), diff --git a/sql/v01/20.create.timestamp-trigger.sql b/sql/v01/20.create.timestamp-trigger.sql index d9ea563..b0b1072 100644 --- a/sql/v01/20.create.timestamp-trigger.sql +++ b/sql/v01/20.create.timestamp-trigger.sql @@ -1,28 +1,32 @@ +INSERT INTO client_parameter (param, value) VALUES ('ENABLE_TIME_TRIGGERS', '1'); + +---------------------------------------------------------------- + CREATE TRIGGER t_member_i_ctime AFTER INSERT ON member FOR EACH ROW - WHEN NEW.ctime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.ctime != UNIXEPOCH() BEGIN UPDATE member SET ctime = UNIXEPOCH() WHERE mgnr = NEW.mgnr; END; CREATE TRIGGER t_member_u_ctime BEFORE UPDATE ON member FOR EACH ROW - WHEN OLD.ctime != NEW.ctime + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND OLD.ctime != NEW.ctime BEGIN SELECT RAISE(ABORT, 'It is not allowed to change ctime'); END; CREATE TRIGGER t_member_i_mtime AFTER INSERT ON member FOR EACH ROW - WHEN NEW.mtime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.mtime != UNIXEPOCH() BEGIN UPDATE member SET mtime = UNIXEPOCH() WHERE mgnr = NEW.mgnr; END; CREATE TRIGGER t_member_u_mtime AFTER UPDATE ON member FOR EACH ROW - WHEN NEW.mtime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.mtime != UNIXEPOCH() BEGIN UPDATE member SET mtime = UNIXEPOCH() WHERE mgnr = NEW.mgnr; END; @@ -31,18 +35,21 @@ END; CREATE TRIGGER t_member_billing_address_i_mtime_member AFTER INSERT ON member_billing_address FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE member SET mtime = UNIXEPOCH() WHERE mgnr = NEW.mgnr; END; CREATE TRIGGER t_member_billing_address_u_mtime_member AFTER UPDATE ON member_billing_address FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE member SET mtime = UNIXEPOCH() WHERE mgnr = OLD.mgnr OR mgnr = NEW.mgnr; END; CREATE TRIGGER t_member_billing_address_d_mtime_member AFTER DELETE ON member_billing_address FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE member SET mtime = UNIXEPOCH() WHERE mgnr = OLD.mgnr; END; @@ -51,18 +58,21 @@ END; CREATE TRIGGER t_member_telephone_number_i_mtime_member AFTER INSERT ON member_telephone_number FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE member SET mtime = UNIXEPOCH() WHERE mgnr = NEW.mgnr; END; CREATE TRIGGER t_member_telephone_number_u_mtime_member AFTER UPDATE ON member_telephone_number FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE member SET mtime = UNIXEPOCH() WHERE mgnr = OLD.mgnr OR mgnr = NEW.mgnr; END; CREATE TRIGGER t_member_telephone_number_d_mtime_member AFTER DELETE ON member_telephone_number FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE member SET mtime = UNIXEPOCH() WHERE mgnr = OLD.mgnr; END; @@ -71,28 +81,28 @@ END; CREATE TRIGGER t_area_commitment_i_ctime AFTER INSERT ON area_commitment FOR EACH ROW - WHEN NEW.ctime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.ctime != UNIXEPOCH() BEGIN UPDATE area_commitment SET ctime = UNIXEPOCH() WHERE fbnr = NEW.fbnr; END; CREATE TRIGGER t_area_commitment_u_ctime BEFORE UPDATE ON area_commitment FOR EACH ROW - WHEN OLD.ctime != NEW.ctime + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND OLD.ctime != NEW.ctime BEGIN SELECT RAISE(ABORT, 'It is not allowed to change ctime'); END; CREATE TRIGGER t_area_commitment_i_mtime AFTER INSERT ON area_commitment FOR EACH ROW - WHEN NEW.mtime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.mtime != UNIXEPOCH() BEGIN UPDATE area_commitment SET mtime = UNIXEPOCH() WHERE fbnr = NEW.fbnr; END; CREATE TRIGGER t_area_commitment_u_mtime AFTER UPDATE ON area_commitment FOR EACH ROW - WHEN NEW.mtime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.mtime != UNIXEPOCH() BEGIN UPDATE area_commitment SET mtime = UNIXEPOCH() WHERE fbnr = NEW.fbnr; END; @@ -101,28 +111,28 @@ END; CREATE TRIGGER t_delivery_i_ctime AFTER INSERT ON delivery FOR EACH ROW - WHEN NEW.ctime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.ctime != UNIXEPOCH() BEGIN UPDATE delivery SET ctime = UNIXEPOCH() WHERE (year, did) = (NEW.year, NEW.did); END; CREATE TRIGGER t_delivery_u_ctime AFTER UPDATE ON delivery FOR EACH ROW - WHEN OLD.ctime != NEW.ctime + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND OLD.ctime != NEW.ctime BEGIN SELECT RAISE(ABORT, 'It is not allowed to change ctime'); END; CREATE TRIGGER t_delivery_i_mtime AFTER INSERT ON delivery FOR EACH ROW - WHEN NEW.mtime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.mtime != UNIXEPOCH() BEGIN UPDATE delivery SET mtime = UNIXEPOCH() WHERE (year, did) = (NEW.year, NEW.did); END; CREATE TRIGGER t_delivery_u_mtime AFTER UPDATE ON delivery FOR EACH ROW - WHEN NEW.mtime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.mtime != UNIXEPOCH() BEGIN UPDATE delivery SET mtime = UNIXEPOCH() WHERE (year, did) = (NEW.year, NEW.did); END; @@ -131,46 +141,49 @@ END; CREATE TRIGGER t_delivery_part_i_ctime AFTER INSERT ON delivery_part FOR EACH ROW - WHEN NEW.ctime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.ctime != UNIXEPOCH() BEGIN UPDATE delivery_part SET ctime = UNIXEPOCH() WHERE (year, did, dpnr) = (NEW.year, NEW.did, NEW.dpnr); END; CREATE TRIGGER t_delivery_part_u_ctime AFTER UPDATE ON delivery_part FOR EACH ROW - WHEN OLD.ctime != NEW.ctime + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND OLD.ctime != NEW.ctime BEGIN SELECT RAISE(ABORT, 'It is not allowed to change ctime'); END; CREATE TRIGGER t_delivery_part_i_mtime AFTER INSERT ON delivery_part FOR EACH ROW - WHEN NEW.mtime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.mtime != UNIXEPOCH() BEGIN UPDATE delivery_part SET mtime = UNIXEPOCH() WHERE (year, did, dpnr) = (NEW.year, NEW.did, NEW.dpnr); END; CREATE TRIGGER t_delivery_part_u_mtime AFTER UPDATE ON delivery_part FOR EACH ROW - WHEN NEW.mtime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.mtime != UNIXEPOCH() BEGIN UPDATE delivery_part SET mtime = UNIXEPOCH() WHERE (year, did, dpnr) = (NEW.year, NEW.did, NEW.dpnr); END; CREATE TRIGGER t_delivery_part_i_mtime_delivery AFTER INSERT ON delivery_part FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE delivery SET mtime = UNIXEPOCH() WHERE (year, did) = (NEW.year, NEW.did); END; CREATE TRIGGER t_delivery_part_u_mtime_delivery AFTER UPDATE ON delivery_part FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE delivery SET mtime = UNIXEPOCH() WHERE (year, did) = (NEW.year, NEW.did) OR (year, did) = (OLD.year, OLD.did); END; CREATE TRIGGER t_delivery_part_d_mtime_delivery AFTER DELETE ON delivery_part FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE delivery SET mtime = UNIXEPOCH() WHERE (year, did) = (OLD.year, OLD.did); END; @@ -179,18 +192,21 @@ END; CREATE TRIGGER t_delivery_part_modifier_i_mtime_delivery_part AFTER INSERT ON delivery_part_modifier FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE delivery_part SET mtime = UNIXEPOCH() WHERE (year, did, dpnr) = (NEW.year, NEW.did, NEW.dpnr); END; CREATE TRIGGER t_delivery_part_modifier_u_mtime_delivery_part AFTER UPDATE ON delivery_part_modifier FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE delivery_part SET mtime = UNIXEPOCH() WHERE (year, did, dpnr) = (NEW.year, NEW.did, NEW.dpnr) OR (year, did, dpnr) = (OLD.year, OLD.did, OLD.dpnr); END; CREATE TRIGGER t_delivery_part_modifier_d_mtime_delivery_part AFTER DELETE ON delivery_part_modifier FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE delivery_part SET mtime = UNIXEPOCH() WHERE (year, did, dpnr) = (OLD.year, OLD.did, OLD.dpnr); END; @@ -199,28 +215,28 @@ END; CREATE TRIGGER t_payment_variant_i_ctime AFTER INSERT ON payment_variant FOR EACH ROW - WHEN NEW.ctime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.ctime != UNIXEPOCH() BEGIN UPDATE payment_variant SET ctime = UNIXEPOCH() WHERE (year, avnr) = (NEW.year, NEW.avnr); END; CREATE TRIGGER t_payment_variant_u_ctime BEFORE UPDATE ON payment_variant FOR EACH ROW - WHEN OLD.ctime != NEW.ctime + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND OLD.ctime != NEW.ctime BEGIN SELECT RAISE(ABORT, 'It is not allowed to change ctime'); END; CREATE TRIGGER t_payment_variant_i_mtime AFTER INSERT ON payment_variant FOR EACH ROW - WHEN NEW.mtime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.mtime != UNIXEPOCH() BEGIN UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (NEW.year, NEW.avnr); END; CREATE TRIGGER t_payment_variant_u_mtime AFTER UPDATE ON payment_variant FOR EACH ROW - WHEN NEW.mtime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.mtime != UNIXEPOCH() BEGIN UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (NEW.year, NEW.avnr); END; @@ -229,18 +245,21 @@ END; CREATE TRIGGER t_payment_delivery_part_i_mtime_payment_variant AFTER INSERT ON payment_delivery_part FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (NEW.year, NEW.avnr); END; CREATE TRIGGER t_payment_delivery_part_u_mtime_payment_variant AFTER UPDATE ON payment_delivery_part FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (OLD.year, OLD.avnr) OR (year, avnr) = (NEW.year, NEW.avnr); END; CREATE TRIGGER t_payment_delivery_part_d_mtime_payment_variant AFTER DELETE ON payment_delivery_part FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (OLD.year, OLD.avnr); END; @@ -249,18 +268,21 @@ END; CREATE TRIGGER t_payment_member_i_mtime_payment_variant AFTER INSERT ON payment_member FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (NEW.year, NEW.avnr); END; CREATE TRIGGER t_payment_member_u_mtime_payment_variant AFTER UPDATE ON payment_member FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (OLD.year, OLD.avnr) OR (year, avnr) = (NEW.year, NEW.avnr); END; CREATE TRIGGER t_payment_member_d_mtime_payment_variant AFTER DELETE ON payment_member FOR EACH ROW + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 BEGIN UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (OLD.year, OLD.avnr); END; @@ -269,28 +291,28 @@ END; CREATE TRIGGER t_credit_i_ctime AFTER INSERT ON credit FOR EACH ROW - WHEN NEW.ctime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.ctime != UNIXEPOCH() BEGIN UPDATE credit SET ctime = UNIXEPOCH() WHERE (year, tgnr) = (NEW.year, NEW.tgnr); END; CREATE TRIGGER t_credit_u_ctime BEFORE UPDATE ON credit FOR EACH ROW - WHEN OLD.ctime != NEW.ctime + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND OLD.ctime != NEW.ctime BEGIN SELECT RAISE(ABORT, 'It is not allowed to change ctime'); END; CREATE TRIGGER t_credit_i_mtime AFTER INSERT ON credit FOR EACH ROW - WHEN NEW.mtime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.mtime != UNIXEPOCH() BEGIN UPDATE credit SET mtime = UNIXEPOCH() WHERE (year, tgnr) = (NEW.year, NEW.tgnr); END; CREATE TRIGGER t_credit_u_mtime AFTER UPDATE ON credit FOR EACH ROW - WHEN NEW.mtime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.mtime != UNIXEPOCH() BEGIN UPDATE credit SET mtime = UNIXEPOCH() WHERE (year, tgnr) = (NEW.year, NEW.tgnr); END; @@ -299,28 +321,28 @@ END; CREATE TRIGGER t_delivery_announcement_i_ctime AFTER INSERT ON delivery_announcement FOR EACH ROW - WHEN NEW.ctime != UNIXEPOCH() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND 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 + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND 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() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND 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() + WHEN (SELECT value FROM client_parameter WHERE param = 'ENABLE_TIME_TRIGGERS') = 1 AND NEW.mtime != UNIXEPOCH() BEGIN UPDATE delivery_announcement SET mtime = UNIXEPOCH() WHERE (year, dsnr, mgnr, sortid) = (NEW.year, NEW.dsnr, NEW.mgnr, NEW.sortid); END; diff --git a/sql/v01/99.schema_version.sql b/sql/v01/99.schema_version.sql index 8d421ee..b11c970 100644 --- a/sql/v01/99.schema_version.sql +++ b/sql/v01/99.schema_version.sql @@ -1,3 +1,3 @@ -- This value MUST NOT be changed while other connections are open! -PRAGMA schema_version = 3100; +PRAGMA schema_version = 3200;