MySQL Trigger
|DBMS MySQL Trigger in Hindi
MySQL Trigger को यदि सरल भाषा में समझे तो यह एक ऐसा सिस्टम हैं जिसे हम किसी भी Table पर Set कर देते हैं और जैसे ही उस टेबल पर कोई भी Operation जैसे Insert Update और Delete perform होते ही यह Trigger Call हो जाते हैं , और जो भी हमने Trigger में Code लिखा हैं उसके अनुसार यह कार्य करने लगते हैं ।
What is trigger in MySQL?
Trigger को यदि हमे समझे तो यह Gun के Button ही हैं जीसे जैसे ही हम Press करते हैं Gun मे से Bullet निकलती हैं उसी प्रकार जैसे ही Table पर जैसे ही Insert / Update / Delete मे से कोई भी Operation होगा वैसे ही Trigger Execute हो जाएगा ।
हम एक टेबल पर Maximum 6 Triggers लिख सकते हैं । (Max 6 triggers in MySQL on a table)
- MySQL Trigger Before Insert
- MySQL Trigger Before Update
- MySQL Trigger Before Delete
- MySQL Trigger After Insert
- MySQL Trigger After Update
- MySQL Trigger After Delete
Advantage of MySQL Trigger
- Reduce Work : Programmer का कार्य बहुत आसान कर देते हैं क्युकी एक बार लिखने पर यह Automatic ही कार्य करते रहते हैं ।
- Validation Checking : यदि हम Before Trigger लिखते हैं हैं तो हम Table में Entry होने से पहले उस पर Validation Check कर सकते हैं ।
- Mobile & Web : जब हम एक ही एप्लीकेशन को Mobile और Web में उपयोग करते हैं तो बहुत से कार्य के लिए हमें Trigger काम में आते हैं । क्युकी इसकी सहायता से जो Common Coding होती हैं उसको हम PHP से database में शिफ्ट कर लेते हैं और वह Coding हमें दोनों Frontend (Web और Mobile) पर काम आ जाती हैं ।
- Fast : ट्रिगर बहुत Fast होते हैं यदि एक Table के Data को अलग अलग Table में पहुंचना हो तो हम बहुत आसानी से कुछ भी Calculation कर Data को दूसरी टेबल में पंहुचा सकते हैं ।
MySQL Trigger Syntax Example (Create Trigger MySQL)
DELIMITER $$
drop trigger <TriggerName> $$
CREATE TRIGGER <TriggerName> BEFORE/AFTER INSERT/UPDATE/DELETE ON TableName
for each row
BEGIN
/* Write your Logic ;*/
END;
$$
DELIMITER ;
DELIMITER
MySQL में भी कोई भी Syntax को Close करने के लिए ; (semicolon) का उपयोग किया जाता हैं , और ट्रिगर / Function को Close करने के लिए भी ; (Semicolon) की ही आवश्यकता होती हैं , यदि हम दोनों स्थान पर ; (Semicolon) का उपयोग करेंगे तो System यह पता नहीं लगा पायेगा की Start कहा से हुआ हैं और End कहा पर हुआ हैं । Delimiter लगा कर हम System को यह बता देते हैं की हम जो भी निचे Syntax लिख रहे हैं उसे $$ से क्लोज करेंगे । और Coding होने के बाद फिर से हम Delimiter में ; (Semicolon) से कर देते हैं । और जो भी हम BEGIN Or END के बिच में हमारे Logic लिखेंगे उसमे हमें ; Semicolon का ही उपयोग करना हैं ।
DROP TRIGGER <TRIGGER NAME> (Delete Trigger MySQL)
Drop Trigger MySQL : जब ही हम First Time Trigger बनाते हैं तो यह Syntax Error देगा क्युकी अभी Trigger बना ही नहीं हैं , लेकिन Second Time Execute करने पर Error नहीं आएगी क्युकी अब ट्रिगर बन चूका हैं , ऐसा इसलिए लिखा जाता हैं ताकि हमें जब भी ट्रिगर में Change करना हो तो हम आसानी से Changes कर ले ।
CREATE TRIGGER <TRIGGER NAME>
- जिस भी नाम से हमें ट्रिगर बनना हैं वह नाम का Angle Braces में लिखते हैं ।
- नाम पुरे डेटाबेस में यूनिक होना चाहिए इसलिए हमेशा Trigger के नाम में Table के नाम को शामिल कर लेना चाहिए ताकि Unique रहे ।
- ट्रिगर के नाम में स्पेस नहीं दे सकते हैं ।
- Trigger के नाम इस तरह से रखे की आपको समझने में आसानी हो और एक डेटाबेस में जितने भी ट्रिगर बनाये सभी के नाम को एक Pattern से रखे ताकि आपको Search करने और समझने में आसानी हो ।
हमारे अन्य Article
- MySQL View
- MySQL Stored Procedure
- Loop in Select Query | Loop in MySQL
- MySQL (Row to Column) & (Column to Row ) Interchange Logic
- Update Stock/Balance Using Trigger
Trigger Time : BEFORE/AFTER
ट्रिगर को हम तरह से उपयोग में ले सकते हैं
BEFORE
- जैसे ही कोई भी Event जैसे Insert/Update/Delete Perform होगा तो उसके पहले यदि हमें कोई Code Execute करना हो तो हम BEFORE का उपयोग करते हैं ।
- अधिकतर Validation के लिए BEFORE Trigger का उपयोग किया जाता हैं ।
- यदि हमें Insert होने से पहले किसी Key की Base पर कुछ डाटा Table में अपडेट करना हो तो हम Before का उपयोग करते हैं ।
- यदि किसी Column में कोई Calculation कर वैल्यू Store करना हो या Default Value Store करना हो तो हम BEFORE का उपयोग करते हैं ।
- Same टेबल पर Value Update कर सकते हैं ।
AFTER
- जब टेबल में डाटा Insert/Update/Delete होने के बाद कोई Operation Perform करना हैं तब हम AFTER ट्रिगर का उपयोग करते हैं ।
- अधिकतर किसी टेबल में इस टेबल की बेस पर Status अपडेट करने में AFTER का उपयोग किया जाता हैं ।
- यदि डाटा को किसी और Table में ले जाना हैं तो AFTER का उपयोग किया जाता हैं ।
- यदि Current डाटा के आधार पर कोई Summary अपडेट करना हो तो हम AFTER Trigger का उपयोग करते हैं ।
- AFTER ट्रिगर से हम Same टेबल कर कोई Operation Perform नहीं कर सकते, यानि की जिस table पर हम Trigger लिख रहे हैं उसी टेबल पर Insert/Update/Delete नहीं कर सकते ।
Other Points
- जब भी ट्रिगर का नाम रखे तो उसमे After/Before को भी शामिल करे ताकि Unique नाम रखा जा सके ।
- आप जब भी नाम रखे तो जरुरी नहीं हैं की पूरा After या Before लिखे इनके Short Form का भी उपयोग कर सकते हैं जैसे A/B आदि ।
Trigger Event : INSERT/UPDATE/DELETE
- MySQL में एक ट्रिगर पर एक समय पर हम INSERT/UPDATE/DELETE में से कोई एक ही Operation Perform कर सकते हैं ।
- Trigger के नाम रखते समय चाहे तो आप ins/upd/del postfix का उपयोग कर सकते हैं ।
- Update Trigger in MySQL : जब हम केवल Update Trigger ही लिखते हैं तो उसे Update Trigger कहाँ जाता हैं ।
ON <TableName>
- जिस Table पर हम Trigger लिख रहे हैं उसका नाम यहाँ पर लिखते है ।
Trigger Body : BEGIN … END
- यह ट्रिगर की BODY हैं इसमें आपको जो भी SQL स्टेटमेंट लिखना हैं वह लिख सकते हैं ।
- यहाँ पर वेरिएबल डिफाइन करना
- किसी भी प्रकार की कंडीशन लगाना
- SQL के Statement लिखना जैसे SELECT/UPDATE/DELETE
- SET और NEW/OLD का उपयोग कर सकते हैं
SET
इस कीवर्ड का उपयोग हम अधिकतर Before Trigger में उपयोग में लेते हैं । Trigger में जिस भी Table का उपयोग किया जाता हैं उसके सभी Column एक Buffer में आ जाते हैं । और उन पर Value Set करने के लिए हम SET Keyword का उपयोग करते हैं ।
Extension : OLD/NEW :
यह एक तरह से Buffer हैं जिसमे जो टेबल हम उपयोग में ले रहे हैं उसके सभी Column के नाम और उनकी value Store रहती हैं, Insert / Update और Delete के Case में यह इस तरह से कार्य करते हैं ।
- INSERT : इसमें केवल NEW buffer ही कार्य करता हैं ।
- UPDATE: इसमें OLD और NEW Buffer दोनों की कार्य करते हैं, वैल्यू Update होने के पहले वाली Value OLD में, और Update Hone वाली वैल्यू NEW में Store रहती हैं ।
- DELETE : इस केवल OLD Buffer ही रहता हैं।
- OLD Keyword Readonly होता हैं आप इसमें कोई Change नहीं कर सकते
- NEW Keyword में केवल BEFORE के Case में Changes कर सकते हैं
Get Column Name in trigger
OLD.columnname और NEW.columnname से हम Column का उपयोग कर सकते हैं ।
MySQL Trigger Example (Trigger Syntax in MySQL)
DELIMITER $$
DROP TRIGGER mytable_before_insert $$
CREATE TRIGGER mytable_before_insert BEFORE INSERT ON mytable
for each row
BEGIN
/*
Write your Logic or SQL Statements;
end with ; semicolon
SET Variable = Value;
SET NEW.mycolumnname = value;
insert into newtable (col1, col2) values (NEW.column1, NEW.column2);
*/
END;
$$
DELIMITER ;
Video के माध्यम से समझने के लिए यंहा पर क्लिक करे
What problems mysql team face when triggers concept was not there in mysql?
- यदि MySQL में Trigger Concept नहीं होगा तो Developer को Front end पर बहुत Code लिखना होंगे आइये सभी पॉइंट समझते हैं ।
- Front End पर बहुत Coding करना होगी
- Data की Entry होते समय जो Validation लगा सकते हैं वह नहीं लगा पायंगे ।
- जो कार्य हम Auto Table में डाटा ले जा कर Trigger से कर सकते थे उसके लिए हमें View या SQL की सहायता से Query लिखना होगी जो Execute होने में समय लेगी
- Trigger Fast होते हैं क्युकी वह Database में ही ऑपरेशन Perform करते हैं जबकि यदि यही कार्य Hum अलग से लिख कर करेंगे तो हमारे पास Bandwidth और Server Speed के Issue भी आ सकते हैं ।
- कुल मिलकर हम यह कह सकते हैं यदि Database में Trigger नहीं होंगे तो डेवलपर को Project बनाने में बहुत मेहनत करना होगी और Project में Efficiency और Speed के Issue का भी सामना करना पड़ेगा ।
Why triggers are developed what would happen if triggers are not there in mysql?
- Database के performance को बढ़ाने के लिए Trigger को बनाया गया ।
- जो कार्य हमें बाहर से database में Perform करते थे वह कार्य यह डेटाबेस में रह कर कर देता हैं ।
- जैसे ही हम Insert/Update/Delete करते हैं वैसे ही यह उन पर लिखे ऑपरेशन Perform कर देता हैं जिससे बाद का SQL Execution का समय बच जाता हैं ।
- Trigger Validation के लिए काम आते हैं ।
- आजकल तो हम ट्रिगर से Https Request भी भेज सकते हैं ।
What is trigger in dbms in hindi ? / what is trigger in sql in hindi ?
जिस प्रकार से हमने MySQL मे Trigger लिखे हैं वैसे अन्य DBMS मे भी हम Trigger लिख सकते हैं , हो सकता हैं Syntax मे कुछ अंतर हो , Syntax के अलावा अन्य सभी विशेषताए Trigger मे एक जैसी ही होती है ।
यदि आपके MySQL Trigger से सम्बंधित कोई भी Query हो तो कमेंट करे , इस आर्टिकल को Improve करने में मदद करने के लिए भी आप कमेंट कर सकते हैं ।