CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(50),
last_name VARCHAR(50),
department VARCHAR(50),
salary DECIMAL(10, 2)
);
2. Create the audit_log table:
CREATE TABLE audit_log (
id INT PRIMARY KEY AUTO_INCREMENT,
action VARCHAR(50),
employee_id INT,
action_time DATETIME
);
3. Create a BEFORE INSERT Trigger:
CREATE TRIGGER set_default_salary
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
IF NEW.salary IS NULL THEN
SET NEW.salary = 50000;
END IF;
END;
4. Create an AFTER INSERT Trigger:
CREATE TRIGGER after_employee_insert
AFTER INSERT ON employees
FOR EACH ROW
BEGIN
INSERT INTO audit_log (action, employee_id, action_time)
VALUES ('INSERT', NEW.id, NOW());
END;
5. Create an AFTER UPDATE Trigger:
CREATE TRIGGER after_salary_update
AFTER UPDATE ON employees
FOR EACH ROW
BEGIN
IF OLD.salary <> NEW.salary THEN
INSERT INTO audit_log (action, employee_id, action_time)
VALUES ('UPDATE SALARY', NEW.id, NOW());
END IF;
END;
6. Create an AFTER DELETE Trigger:
CREATE TRIGGER after_employee_delete
AFTER DELETE ON employees
FOR EACH ROW
BEGIN
INSERT INTO audit_log (action, employee_id, action_time)
VALUES ('DELETE', OLD.id, NOW());
END;
INSERT INTO employees (first_name, last_name, department, salary)
VALUES ('John', 'Doe', 'Engineering', NULL);
Check the employees and audit_log tables to see the effects of the triggers.
Update an employee's salary:
UPDATE employees
SET salary = 80000
WHERE id = 1;
Check the audit_log table to see the log entry.
Delete an employee:
DELETE FROM employees
WHERE id = 1;
Check the audit_log table to see the log entry.
To modify an existing trigger, you need to drop it and recreate it.
DROP TRIGGER set_default_salary;
CREATE TRIGGER set_default_salary
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
IF NEW.salary IS NULL THEN
SET NEW.salary = 60000;
END IF;
END;
Drop a Trigger:
DROP TRIGGER after_employee_insert;