#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
5 min read
Question 14 of 29hard

What are SQL Triggers?

Automatic actions on data changes.

What You'll Learn

  • What triggers are
  • Creating triggers
  • Use cases

What is a Trigger?

A trigger is code that automatically executes in response to certain events on a table (INSERT, UPDATE, DELETE).

Creating Triggers

query.sqlSQL
-- MySQL
DELIMITER //
CREATE TRIGGER before_user_insert
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
  SET NEW.created_at = NOW();
  SET NEW.status = 'pending';
END //
DELIMITER ;

Trigger Types

query.sqlSQL
-- BEFORE INSERT
CREATE TRIGGER validate_email
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
  IF NEW.email NOT LIKE '%@%.%' THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid email';
  END IF;
END;

-- AFTER INSERT
CREATE TRIGGER log_new_user
AFTER INSERT ON users
FOR EACH ROW
BEGIN
  INSERT INTO audit_log (action, table_name, record_id)
  VALUES ('INSERT', 'users', NEW.id);
END;

-- AFTER UPDATE
CREATE TRIGGER track_changes
AFTER UPDATE ON products
FOR EACH ROW
BEGIN
  IF OLD.price != NEW.price THEN
    INSERT INTO price_history (product_id, old_price, new_price)
    VALUES (NEW.id, OLD.price, NEW.price);
  END IF;
END;

-- AFTER DELETE
CREATE TRIGGER archive_deleted_user
AFTER DELETE ON users
FOR EACH ROW
BEGIN
  INSERT INTO deleted_users (id, name, email, deleted_at)
  VALUES (OLD.id, OLD.name, OLD.email, NOW());
END;

OLD vs NEW

  • NEW: Row data after the operation (INSERT, UPDATE)
  • OLD: Row data before the operation (UPDATE, DELETE)

Managing Triggers

query.sqlSQL
-- Show triggers
SHOW TRIGGERS;

-- Drop trigger
DROP TRIGGER before_user_insert;