Files
elwig-misc/sql/v01/11.timestamp-trigger.sql

257 lines
8.0 KiB
SQL

CREATE TRIGGER t_member_i_ctime
AFTER INSERT ON member FOR EACH ROW
WHEN 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
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()
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()
BEGIN
UPDATE member SET mtime = UNIXEPOCH() WHERE mgnr = NEW.mgnr;
END;
----------------------------------------------------------------
CREATE TRIGGER t_member_billing_address_i_mtime_member
AFTER INSERT ON member_billing_address FOR EACH ROW
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
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
BEGIN
UPDATE member SET mtime = UNIXEPOCH() WHERE mgnr = OLD.mgnr;
END;
----------------------------------------------------------------
CREATE TRIGGER t_contract_i_ctime
AFTER INSERT ON contract FOR EACH ROW
WHEN NEW.ctime != UNIXEPOCH()
BEGIN
UPDATE contract SET ctime = UNIXEPOCH() WHERE vnr = NEW.vnr;
END;
CREATE TRIGGER t_contract_u_ctime
BEFORE UPDATE ON contract FOR EACH ROW
WHEN OLD.ctime != NEW.ctime
BEGIN
SELECT RAISE(ABORT, 'It is not allowed to change ctime');
END;
CREATE TRIGGER t_contract_i_mtime
AFTER INSERT ON contract FOR EACH ROW
WHEN NEW.mtime != UNIXEPOCH()
BEGIN
UPDATE contract SET mtime = UNIXEPOCH() WHERE vnr = NEW.vnr;
END;
CREATE TRIGGER t_contract_u_mtime
AFTER UPDATE ON contract FOR EACH ROW
WHEN NEW.mtime != UNIXEPOCH()
BEGIN
UPDATE contract SET mtime = UNIXEPOCH() WHERE vnr = NEW.vnr;
END;
----------------------------------------------------------------
CREATE TRIGGER t_area_commitment_i_mtime_contract
AFTER INSERT ON area_commitment FOR EACH ROW
BEGIN
UPDATE contract SET mtime = UNIXEPOCH() WHERE vnr = NEW.vnr;
END;
CREATE TRIGGER t_area_commitment_u_mtime_contract
AFTER UPDATE ON area_commitment FOR EACH ROW
BEGIN
UPDATE contract SET mtime = UNIXEPOCH() WHERE vnr = OLD.vnr OR vnr = NEW.vnr;
END;
CREATE TRIGGER t_area_commitment_d_mtime_contract
AFTER DELETE ON area_commitment FOR EACH ROW
BEGIN
UPDATE contract SET mtime = UNIXEPOCH() WHERE vnr = OLD.vnr;
END;
----------------------------------------------------------------
CREATE TRIGGER t_area_commitment_parcel_i_mtime_contract
AFTER INSERT ON area_commitment_parcel FOR EACH ROW
BEGIN
UPDATE contract SET mtime = UNIXEPOCH() WHERE vnr = NEW.vnr;
END;
CREATE TRIGGER t_area_commitment_parcel_u_mtime_contract
AFTER UPDATE ON area_commitment_parcel FOR EACH ROW
BEGIN
UPDATE contract SET mtime = UNIXEPOCH() WHERE vnr = OLD.vnr OR vnr = NEW.vnr;
END;
CREATE TRIGGER t_area_commitment_parcel_d_mtime_contract
AFTER DELETE ON area_commitment_parcel FOR EACH ROW
BEGIN
UPDATE contract SET mtime = UNIXEPOCH() WHERE vnr = OLD.vnr;
END;
----------------------------------------------------------------
CREATE TRIGGER t_area_commitment_attribute_i_mtime_contract
AFTER INSERT ON area_commitment_attribute FOR EACH ROW
BEGIN
UPDATE contract SET mtime = UNIXEPOCH() WHERE vnr = NEW.vnr;
END;
CREATE TRIGGER t_area_commitment_attribute_u_mtime_contract
AFTER UPDATE ON area_commitment_attribute FOR EACH ROW
BEGIN
UPDATE contract SET mtime = UNIXEPOCH() WHERE vnr = OLD.vnr OR vnr = NEW.vnr;
END;
CREATE TRIGGER t_area_commitment_attribute_d_mtime_contract
AFTER DELETE ON area_commitment_attribute FOR EACH ROW
BEGIN
UPDATE contract SET mtime = UNIXEPOCH() WHERE vnr = OLD.vnr;
END;
----------------------------------------------------------------
CREATE TRIGGER t_delivery_i_ctime
AFTER INSERT ON delivery FOR EACH ROW
WHEN 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
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()
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()
BEGIN
UPDATE delivery SET mtime = UNIXEPOCH() WHERE (year, did) = (NEW.year, NEW.did);
END;
----------------------------------------------------------------
CREATE TRIGGER t_delivery_part_i_ctime
AFTER INSERT ON delivery_part FOR EACH ROW
WHEN 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
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()
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()
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
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
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
BEGIN
UPDATE delivery SET mtime = UNIXEPOCH() WHERE (year, did) = (OLD.year, OLD.did);
END;
----------------------------------------------------------------
CREATE TRIGGER t_delivery_part_attribute_i_mtime_delivery_part
AFTER INSERT ON delivery_part_attribute FOR EACH ROW
BEGIN
UPDATE delivery_part SET mtime = UNIXEPOCH() WHERE (year, did, dpnr) = (NEW.year, NEW.did, NEW.dpnr);
END;
CREATE TRIGGER t_delivery_part_attribute_u_mtime_delivery_part
AFTER UPDATE ON delivery_part_attribute FOR EACH ROW
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_attribute_d_mtime_delivery_part
AFTER DELETE ON delivery_part_attribute FOR EACH ROW
BEGIN
UPDATE delivery_part SET mtime = UNIXEPOCH() WHERE (year, did, dpnr) = (OLD.year, OLD.did, OLD.dpnr);
END;
----------------------------------------------------------------
CREATE TRIGGER t_delivery_part_modifier_i_mtime_delivery_part
AFTER INSERT ON delivery_part_modifier FOR EACH ROW
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
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
BEGIN
UPDATE delivery_part SET mtime = UNIXEPOCH() WHERE (year, did, dpnr) = (OLD.year, OLD.did, OLD.dpnr);
END;