Functions & Triggers in MySQL

From the MySQL Advanced Features cheat sheet · Stored Procedures & Functions · verified Jul 2026

Functions & Triggers

User-defined functions and automatic triggers

sql
-- Create function
DELIMITER $$
CREATE FUNCTION CalculateTax(price DECIMAL(10,2))
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
  RETURN price * 0.08;
END$$
DELIMITER ;

-- Use function
SELECT price, CalculateTax(price) as tax
FROM products;

-- Create trigger
DELIMITER $$
CREATE TRIGGER update_modified
BEFORE UPDATE ON users
FOR EACH ROW
BEGIN
  SET NEW.modified_at = NOW();
END$$
DELIMITER ;

-- DETAILED_TAB:
-- Complex trigger with logging
DELIMITER $$
CREATE TRIGGER audit_user_changes
AFTER UPDATE ON users
FOR EACH ROW
BEGIN
  INSERT INTO audit_log (
    table_name,
    record_id,
    action,
    old_values,
    new_values,
    changed_by,
    changed_at
  ) VALUES (
    'users',
    NEW.id,
    'UPDATE',
    JSON_OBJECT('name', OLD.name, 'email', OLD.email),
    JSON_OBJECT('name', NEW.name, 'email', NEW.email),
    USER(),
    NOW()
  );
END$$
DELIMITER ;

-- List triggers
SHOW TRIGGERS;
DROP TRIGGER IF EXISTS trigger_name;
💡 Functions must return a value, procedures don't
📌 DETERMINISTIC means same input = same output
⚡ Triggers auto-execute on table events
⚠️ Triggers can make debugging harder
🔗 Related: events for scheduled tasks
functionstriggers

Continue with MySQL Advanced Features

Save the full cheat sheet or work through every related task.

More MySQL tasks

Back to the full MySQL Advanced Features cheat sheet