What is a Trigger
A Trigger is a special database object that automatically executes when a specific event occurs on a table.
You do not call a Trigger manually. It runs automatically whenever an INSERT, UPDATE, or DELETE operation happens.
आसान भाषा में (Hindi)
Trigger Database के अंदर एक Automatic SQL Program होता है।
जब Table पर कोई Event होता है जैसे:
- INSERT
- UPDATE
- DELETE
तो Trigger अपने आप Execute हो जाता है।
Simple Definition:
Trigger = Event + Automatic Action
Why Do We Need Triggers?
मान लीजिए किसी Company में Employee की Salary Update होती है।
हर Salary Change का Record एक Audit Table में Save करना है।
Without Trigger:
Developer को हर बार दो Queries लिखनी पड़ेंगी।
UPDATE Employee
SET Salary = 60000
WHERE EmployeeID = 101;
INSERT INTO Salary_Log
VALUES(101,50000,60000,NOW());
अगर दूसरी Query भूल जाए, तो History Save नहीं होगी।
With Trigger
केवल एक Query चलेगी।
UPDATE Employee
SET Salary = 60000
WHERE EmployeeID = 101;
Trigger Automatically
Salary Updated
↓
Trigger Executes
↓
Salary_Log Table Updated
कोई Extra Query लिखने की ज़रूरत नहीं।
How Trigger Works
User/Application
│
▼
INSERT / UPDATE / DELETE
│
▼
Trigger Fires
│
▼
SQL Statements Execute
│
▼
Result Saved/Updated
Types of SQL Triggers
मुख्य रूप से तीन Events पर Trigger चलता है।
1. INSERT Trigger
जब नई Row Insert होती है।
New Employee Added
↓
INSERT Trigger
↓
Welcome Email / Audit Log
2. UPDATE Trigger
जब Existing Data Update होता है।
Salary Updated
↓
UPDATE Trigger
↓
Salary History Saved
3. DELETE Trigger
जब कोई Record Delete होता है।
Employee Deleted
↓
DELETE Trigger
↓
Backup Record Created
BEFORE Trigger
Event होने से पहले Execute होता है।
Example
INSERT Request
↓
BEFORE Trigger
↓
Validation
↓
Insert Data
Use Cases
- Validate Data
- Prevent Invalid Records
- Modify Values Before Saving
AFTER Trigger
Event पूरा होने के बाद Execute होता है।
INSERT Completed
↓
AFTER Trigger
↓
Audit Table Updated
↓
Notification Sent
Use Cases
- Audit Logging
- Notifications
- Reports
- Backup
Syntax (MySQL)
DELIMITER $$
CREATE TRIGGER trigger_name
BEFORE INSERT
ON Employee
FOR EACH ROW
BEGIN
SQL Statements;
END $$
DELIMITER ;
Example 1: BEFORE INSERT Trigger
Employee Table
| EmployeeID | EmployeeName | Salary |
|---|---|---|
| 101 | Rahul | 50000 |
Create Trigger
DELIMITER $$
CREATE TRIGGER CheckSalary
BEFORE INSERT
ON Employee
FOR EACH ROW
BEGIN
IF NEW.Salary <10000 THEN
SET NEW.Salary =10000;
END IF;
END $$
DELIMITER ;
Explanation
अगर कोई Salary 10000 से कम Insert करेगा,
Database Automatically उसे 10000 कर देगा।
Insert
INSERT INTO Employee
VALUES
(102,'Aman',5000);
Stored Data
| EmployeeID | EmployeeName | Salary |
|---|---|---|
| 102 | Aman | 10000 |
Example 2: AFTER UPDATE Trigger
Salary_Log Table
| EmployeeID | OldSalary | NewSalary |
|---|
Trigger
DELIMITER $$
CREATE TRIGGER SalaryHistory
AFTER UPDATE
ON Employee
FOR EACH ROW
BEGIN
INSERT INTO Salary_Log
VALUES
(
OLD.EmployeeID,
OLD.Salary,
NEW.Salary
);
END $$
DELIMITER ;
Update
UPDATE Employee
SET Salary =65000
WHERE EmployeeID =101;
Output
Salary_Log
| EmployeeID | OldSalary | NewSalary |
|---|---|---|
| 101 | 50000 | 65000 |
OLD and NEW Keywords
OLD
Update या Delete से पहले की Value।
Example
OLD.Salary
NEW
Update या Insert के बाद की Value।
Example
NEW.Salary
Trigger Execution Flow
INSERT / UPDATE / DELETE
│
▼
Trigger Fires
│
▼
Execute SQL Statements
│
▼
Return Control
Trigger vs Stored Procedure
| Trigger | Stored Procedure |
|---|---|
| Automatically Executes | Manually Called |
| Event Based | User Based |
| Cannot Call Directly | Uses CALL Statement |
| Runs on INSERT/UPDATE/DELETE | Runs Anytime |
Trigger vs Function
| Trigger | Function |
|---|---|
| Automatic | Manual Call |
| Event Based | Returns Value |
| No Direct Call | Used in SELECT |
| Mainly for Automation | Mainly for Calculation |
💬 Leave a Comment & Rating