# Shop Customer DROP TRIGGER IF EXISTS before_insert_Shop_Customer; DROP TRIGGER IF EXISTS before_update_Shop_Customer; DELIMITER // CREATE TRIGGER before_insert_Shop_Customer BEFORE INSERT ON Shop_Customer 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_Customer BEFORE UPDATE ON Shop_Customer 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_Customer_Audit ( id_customer, name_field, value_prev, value_new, id_change_set ) # Changed name_company SELECT NEW.id_customer, 'name_company', OLD.name_company, NEW.name_company, NEW.id_change_set WHERE NOT OLD.name_company <=> NEW.name_company UNION # Changed name_contact SELECT NEW.id_customer, 'name_contact', OLD.name_contact, NEW.name_contact, NEW.id_change_set WHERE NOT OLD.name_contact <=> NEW.name_contact UNION # Changed department_contact SELECT NEW.id_customer, 'department_contact', OLD.department_contact, NEW.department_contact, NEW.id_change_set WHERE NOT OLD.department_contact <=> NEW.department_contact UNION # Changed id_address SELECT NEW.id_customer, 'id_address', OLD.id_address, NEW.id_address, NEW.id_change_set WHERE NOT OLD.id_address <=> NEW.id_address UNION # Changed phone_number SELECT NEW.id_customer, 'phone_number', OLD.phone_number, NEW.phone_number, NEW.id_change_set WHERE NOT OLD.phone_number <=> NEW.phone_number UNION # Changed email SELECT NEW.id_customer, 'email', OLD.email, NEW.email, NEW.id_change_set WHERE NOT OLD.email <=> NEW.email UNION # Changed id_currency SELECT NEW.id_customer, 'id_currency', OLD.id_currency, NEW.id_currency, NEW.id_change_set WHERE NOT OLD.id_currency <=> NEW.id_currency UNION # Changed active SELECT NEW.id_customer, 'active', OLD.active, NEW.active, NEW.id_change_set WHERE NOT OLD.active <=> NEW.active ; END // DELIMITER ;