๐ฅ Now, letโs move to the next topic:
Triggers in SQL
(Automation inside database ๐ฏ)
๐ง 1. What is a Trigger?
A Trigger is a special SQL block
๐ that runs automatically
๐ when an event happens in a table
Think like this ๐
๐ โAutomatic action on INSERT / UPDATE / DELETEโ
โก 2. Why Use Triggers?
โ Automatic logging
โ Data validation
โ Audit tracking
โ Prevent invalid operations
โก 3. Types of Triggers
BEFORE INSERT โ Runs before inserting data
AFTER INSERT โ Runs after inserting data
BEFORE UPDATE โ Runs before updating
AFTER UPDATE โ Runs after updating
BEFORE DELETE โ Runs before deleting
AFTER DELETE โ Runs after deleting
๐ฅ 4. Basic Trigger Example
๐ Automatically log inserted employee
CREATE TABLE employee_log (
log_message VARCHAR(255)
);
DELIMITER //
CREATE TRIGGER after_employee_insert
AFTER INSERT ON employees
FOR EACH ROW
BEGIN
INSERT INTO employee_log
VALUES (CONCAT('New employee added: ', NEW.name));
END //
DELIMITER ;
๐ง 5. Important Keywords
NEW โ New inserted/updated value
OLD โ Previous value before update/delete
โก 6. BEFORE UPDATE Example
๐ Prevent negative salary
DELIMITER //
CREATE TRIGGER check_salary
BEFORE UPDATE ON employees
FOR EACH ROW
BEGIN
IF NEW.salary < 0 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Salary cannot be negative';
END IF;
END //
DELIMITER ;
โ 7. Drop Trigger
DROP TRIGGER after_employee_insert;
๐ฏ 8. Practice Tasks
1. Create AFTER INSERT trigger
2. Create BEFORE UPDATE trigger
3. Prevent negative salary using trigger
4. Log deleted employees
5. Drop created trigger
โก Mini Challenge ๐ฅ
๐ Create trigger to automatically save deleted employee names into another table
๐ฅ Mini Challenge Solution
๐ Automatically save deleted employee names into another table
โ
Step 1: Create Log Table
CREATE TABLE deleted_employees (
emp_id INT,
name VARCHAR(50),
deleted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
โ
Step 2: Create Trigger
DELIMITER //
CREATE TRIGGER log_deleted_employee
AFTER DELETE ON employees
FOR EACH ROW
BEGIN
INSERT INTO deleted_employees(emp_id, name)
VALUES (OLD.emp_id, OLD.name);
END //
DELIMITER ;
๐ง How It Works
๐ AFTER DELETE โ runs automatically after deletion
๐ OLD.emp_id and OLD.name
Access deleted row values before they disappear
โ
Example
DELETE FROM employees
WHERE emp_id = 101;
โ Deleted employee info automatically saved in deleted_employees table ๐ฏ
๐ฅ Pro Tip
Triggers are powerful but:
โ Too many triggers can slow database
โ
Use them carefully ๐ฏ
Double Tap โค๏ธ For More
Post #2443
3.06K
- โค 7