OneCompiler

DBMS 4

1609

CREATE TABLE customers (
ID INT AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(255),
AGE INT,
ADDRESS VARCHAR(255),
SALARY DECIMAL(10, 2)
);
INSERT INTO customers (ID, NAME, AGE, ADDRESS, SALARY)
VALUES (1, 'John Doe', 30, '123 Main St', 50000);
INSERT INTO customers (ID, NAME, AGE, ADDRESS, SALARY)
VALUES (2, 'Jane Smith', 25, '456 Elm St', 60000);
INSERT INTO customers (ID, NAME, AGE, ADDRESS, SALARY)
VALUES (3, 'Mike Johnson', 35, '789 Oak St', 70000);
DELIMITER //
CREATE TRIGGER customers_insert_salary_change
BEFORE INSERT ON customers
FOR EACH ROW
BEGIN
DECLARE new_salary DECIMAL(10, 2);
SET new_salary = NEW.salary;
SET @message = CONCAT('New salary: ', new_salary);
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = @message;
END;
//
DELIMITER ;
DELIMITER //
CREATE TRIGGER customers_update_salary_change
BEFORE UPDATE ON customers
FOR EACH ROW
BEGIN
DECLARE old_salary DECIMAL(10, 2);
DECLARE new_salary DECIMAL(10, 2);
SET old_salary = OLD.salary;
SET new_salary = NEW.salary;
SET @message = CONCAT('Salary difference: ', (new_salary -
old_salary));
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = @message;
END;
//
DELIMITER ;
DELIMITER //
CREATE TRIGGER customers_delete_salary_change
BEFORE DELETE ON customers
FOR EACH ROW
BEGIN
DECLARE old_salary DECIMAL(10, 2);
SET old_salary = OLD.salary;
SET @message = CONCAT('Salary before deletion: ', old_salary);
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = @message;
END;
//
DELIMITER ;