# Shop Address DROP TRIGGER IF EXISTS before_insert_Shop_Address; DROP TRIGGER IF EXISTS before_update_Shop_Address; DELIMITER // CREATE TRIGGER before_insert_Shop_Address BEFORE INSERT ON Shop_Address FOR EACH ROW BEGIN SET NEW.created_on := IFNULL(NEW.created_on, NOW()); SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); END // DELIMITER ; DELIMITER // CREATE TRIGGER before_update_Shop_Address BEFORE UPDATE ON Shop_Address FOR EACH ROW BEGIN IF OLD.id_change_set <=> NEW.id_change_set THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'New change Set ID must be provided.'; END IF; INSERT INTO Shop_Address_Audit ( id_address, name_field, value_prev, value_new, id_change_set ) # Changed region SELECT NEW.id_address, 'id_region', OLD.id_region, NEW.id_region, NEW.id_change_set WHERE NOT OLD.id_region <=> NEW.id_region UNION # Changed postcode SELECT NEW.id_address, 'postcode', OLD.postcode, NEW.postcode, NEW.id_change_set WHERE NOT OLD.postcode <=> NEW.postcode UNION # Changed address_line_1 SELECT NEW.id_address, 'address_line_1', OLD.address_line_1, NEW.address_line_1, NEW.id_change_set WHERE NOT OLD.address_line_1 <=> NEW.address_line_1 UNION # Changed address_line_2 SELECT NEW.id_address, 'address_line_2', OLD.address_line_2, NEW.address_line_2, NEW.id_change_set WHERE NOT OLD.address_line_2 <=> NEW.address_line_2 UNION # Changed city SELECT NEW.id_address, 'city', OLD.city, NEW.city, NEW.id_change_set WHERE NOT OLD.city <=> NEW.city UNION # Changed county SELECT NEW.id_address, 'county', OLD.county, NEW.county, NEW.id_change_set WHERE NOT OLD.county <=> NEW.county UNION # Changed active SELECT NEW.id_address, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set WHERE NOT (OLD.active <=> NEW.active) ; END // DELIMITER ;