Practical Use Cases of SQL Triggers – Real-World Examples
Why Use Triggers?
SQL triggers are powerful tools for automating database tasks that should happen automatically in response to changes in data. They allow you to enforce rules, maintain consistency, and eliminate manual tasks in production systems.
Here are common and practical use cases where triggers are highly beneficial.
1. Data Auditing
Automatically track changes (INSERT, UPDATE, DELETE) to sensitive or important tables.
Example:
CREATE TRIGGER after_employee_update
AFTER UPDATE ON employees
FOR EACH ROW
BEGIN
INSERT INTO employee_audit(employee_id, old_salary, new_salary, changed_at)
VALUES (OLD.id, OLD.salary, NEW.salary, NOW());
END;
Use case: Track who changed what and when, for compliance or debugging.
2. Data Validation
Prevent invalid data from being inserted or updated by checking values beforehand.
Example:
CREATE TRIGGER before_product_insert
BEFORE INSERT ON products
FOR EACH ROW
BEGIN
IF NEW.price < 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Price cannot be negative';
END IF;
END;
Use case: Enforce business rules without writing checks in every application.
3. Auto-updating Derived Fields
Automatically update one field based on another.
Example:
CREATE TRIGGER before_order_insert
BEFORE INSERT ON orders
FOR EACH ROW
BEGIN
SET NEW.total_price = NEW.unit_price * NEW.quantity;
END;
Use case: Eliminate calculation errors and ensure data consistency.
4. Soft Deletes (Archiving)
Instead of deleting data, move it to an archive table.
Example:
CREATE TRIGGER after_order_delete
AFTER DELETE ON orders
FOR EACH ROW
BEGIN
INSERT INTO deleted_orders(id, customer_id, deleted_at)
VALUES (OLD.id, OLD.customer_id, NOW());
END;
Use case: Maintain historical data for auditing or rollback.
5. Synchronizing Tables
Keep two tables in sync by mirroring changes.
Example:
CREATE TRIGGER after_customer_update
AFTER UPDATE ON customers
FOR EACH ROW
BEGIN
UPDATE customer_backup
SET name = NEW.name, email = NEW.email
WHERE id = NEW.id;
END;
Use case: Maintain a live mirror or cache table.
6. Triggering Business Workflows
Use triggers to notify or queue events when data changes.
Example (conceptual):
- When a new order is inserted, add a record to a "processing queue" table.
- When an inventory level drops below a threshold, log a restocking request.
Use case: Integrate data change events with application logic or automation.
Important Considerations
- Triggers run automatically and may impact performance
- Avoid complex or long-running operations inside triggers
- Always test thoroughly to prevent unexpected behaviors