MySQL में BEFORE INSERT ट्रिगर किसी नई पंक्ति के इन्सर्ट होने से पहले स्वचालित रूप से निष्पादित होता है। इसका उपयोग डेटा वैलिडेशन, डिफ़ॉल्ट मान सेट करने, बिजनेस नियम लागू करने, या इन्सर्ट रोकने के लिए किया जाता है।
सिंटैक्स
DELIMITER //
CREATE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
-- ट्रिगर लॉजिक
END //
DELIMITER ;
उदाहरण: योग 60 से अधिक होने पर इन्सर्ट रोकना
डेमो टेबल बनाएं:
mysql> CREATE TABLE DemoTable1919 (Value INT);
ट्रिगर बनाएं (इन्सर्ट से पहले योग चेक करें):
mysql> DELIMITER //
mysql> CREATE TRIGGER sumis60 BEFORE INSERT ON DemoTable1919
FOR EACH ROW
BEGIN
DECLARE custom_message VARCHAR(256);
IF (SELECT SUM(Value) FROM DemoTable1919) >= 60 THEN
SET custom_message = 'Cannot insert because sum(Value) would exceed 60';
SIGNAL SQLSTATE '13500' SET MESSAGE_TEXT = custom_message;
END IF;
END //
mysql> DELIMITER ;
ट्रिगर टेस्ट करें:
mysql> INSERT INTO DemoTable1919 VALUES (10); -- OK, sum=10 mysql> INSERT INTO DemoTable1919 VALUES (20); -- OK, sum=30 mysql> INSERT INTO DemoTable1919 VALUES (30); -- OK, sum=60 mysql> INSERT INTO DemoTable1919 VALUES (40); -- ERROR! sum would be 100 ERROR 1644 (13500): Cannot insert because sum(Value) would exceed 60
ट्रिगर घटक व्याख्या
BEFORE INSERT: इन्सर्ट से पहले फायर होता है (मान बदल सकते हैं, रोक सकते हैं)FOR EACH ROW: प्रत्येक प्रभावित पंक्ति के लिए एक बार निष्पादितNEW: नई पंक्ति के कॉलम एक्सेस करने के लिए (NEW.column_name)SIGNAL SQLSTATE: कस्टम एरर उठाकर ऑपरेशन रोकता हैSQLSTATE '13500': यूज़र-डिफ़ाइंड एरर के लिए सामान्य कोड
NEW कीवर्ड के साथ मान संशोधित करना
CREATE TRIGGER before_user_insert
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
SET NEW.created_at = NOW();
SET NEW.email = LOWER(TRIM(NEW.email));
SET NEW.username = CONCAT('usr_', NEW.username);
END
अन्य ट्रिगर समय
| समय | उपयोग | मान बदल सकते हैं? |
|---|---|---|
| BEFORE INSERT/UPDATE | वैलिडेशन, डिफ़ॉल्ट, संशोधन | हां (NEW) |
| AFTER INSERT/UPDATE/DELETE | लॉगिंग, ऑडिट, कैस्केड | नहीं |
ट्रिगर प्रबंधन
-- ट्रिगर देखें SHOW TRIGGERS; -- ट्रिगर ड्रॉप करें DROP TRIGGER IF EXISTS trigger_name;
सावधानियां
- ट्रिगर के अंदर उसी टेबल को क्वेरी न करें (म्यूटेटिंग टेबल एरर)
- जटिल लॉजिक से बचें; प्रदर्शन प्रभावित हो सकता है
- ट्रांजैक्शन के साथ काम करते हैं (रोलबैक पर ट्रिगर प्रभाव भी रोलबैक)
BEFORE INSERT ट्रिगर डेटा इंटीग्रिटी और बिजनेस नियमों को डेटाबेस लेयर पर लागू करने का शक्तिशाली तरीका है।