Introduction
Triggers help automatically do tasks in the database when data changes, so you don't have to do them by hand every time.
CREATE TRIGGER trigger_name AFTER|BEFORE INSERT|UPDATE|DELETE ON table_name FOR EACH ROW BEGIN -- SQL statements to run automatically END;
CREATE TRIGGER log_update AFTER UPDATE ON employees FOR EACH ROW BEGIN INSERT INTO audit_log(employee_id, changed_at) VALUES (NEW.id, CURRENT_TIMESTAMP); END;
CREATE TRIGGER check_salary BEFORE INSERT ON employees FOR EACH ROW BEGIN IF NEW.salary < 0 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Salary cannot be negative'; END IF; END;
CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(50), salary DECIMAL(10,2) ); CREATE TABLE audit_log ( log_id INT AUTO_INCREMENT PRIMARY KEY, employee_id INT, changed_at TIMESTAMP ); CREATE TRIGGER log_salary_update AFTER UPDATE ON employees FOR EACH ROW BEGIN INSERT INTO audit_log(employee_id, changed_at) VALUES (NEW.id, CURRENT_TIMESTAMP); END; INSERT INTO employees (id, name, salary) VALUES (1, 'Alice', 50000); UPDATE employees SET salary = 55000 WHERE id = 1; SELECT * FROM audit_log;
Triggers are special procedures that run automatically. What is their main purpose?Employees?Orders:CREATE TRIGGER trg_log AFTER UPDATE ON Orders BEGIN INSERT INTO AuditLog VALUES('Order updated'); END;CREATE TRIGGER trg_check BEFORE INSERT ON Users BEGIN IF NEW.age < 18 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Age must be 18 or older'; END IF; END;
PriceHistory table automatically. Which trigger design best achieves this?Pass the test and this pattern moves unknown