MYSQL में दृश्य और ट्रिगर

हम इस ब्लॉग में इसके बारे में बात करने जा रहे हैं दृश्य और MySQL में ट्रिगर.

दृश्य:

एक आभासी या अस्थायी तालिका जो किसी अन्य क्वेरी/सेकंड SQL कथन के परिणाम सेट को संग्रहीत करती है। इसमें वास्तविक तालिकाओं की तरह ही पंक्तियाँ और स्तंभ हैं। किसी दृश्य का अपना डेटा नहीं होता है, इसके बजाय इसमें एक या अधिक तालिकाओं का डेटा होता है। हम केवल चुनिंदा कथनों के साथ एक दृश्य बना सकते हैं। एक दृश्य में एक या अधिक तालिकाओं के कॉलम हो सकते हैं। यदि आप मूल तालिका में कोई परिवर्तन करते हैं, तो वे परिवर्तन दृश्य में भी दिखाई देते हैं।

दृश्य बनाना

निम्नलिखित तालिका स्टड पर विचार करें:

स्टड से * चुनें;

+—-+—————+—————+——-+—————+——+

| आईडी | नाम | कोर्स | अंक | मोबाइलनो | उम्र |

+—-+—————+—————+——-+—————+——+

| 1 | शाम | नोड | 105 | 8797678990 | 20 |

| 2 | गीता | एसएस | 93.1 | 87976789 | 20 |

| 3 | निर्दिष्ट नहीं | निर्दिष्ट नहीं | 110 | 0 | 30 |

, 4 | रिया | परीक्षण | 78.8 | 87976789 | 25 |

| 5 | निर्दिष्ट नहीं | वेब | 72.9 | 9997976789 | 23 |

| 6 | निर्दिष्ट नहीं | एसएस | 10 | 0 | 25 |

| 7 | जय | निर्दिष्ट नहीं | 78 | निर्दिष्ट नहीं | 0 |

+—-+—————+—————+——-+—————+——+

#एक ही टेबल पर एक दृश्य बनाना

चयन के अनुसार पाठ्यक्रम विवरण बनाएं * अध्ययन से जहां पाठ्यक्रम = “वेब” या पाठ्यक्रम = “परीक्षण”;

#कॉलिंग सीन

पाठ्यक्रम विवरण से * चुनें;

+—-+—————+———+——-+————+——+

| आईडी | नाम | कोर्स | अंक | मोबाइलनो | उम्र |

+—-+—————+———+——-+————+——+

, 4 | रिया | परीक्षण | 78.8 | 87976789 | 25 |

| 5 | निर्दिष्ट नहीं | वेब | 72.9 | 9997976789 | 23 |

+—-+—————+———+——-+————+——+

# परिवर्तनों का उपयोग करके दृश्य अद्यतन करना

पाठ्यक्रम विवरण को चयन के रूप में देखें * जहां अध्ययन करें

(पाठ्यक्रम = “वेब” या पाठ्यक्रम = “परीक्षण”) और स्कोर > 70;

पाठ्यक्रम विवरण से * चुनें;

# बदला हुआ दृश्य

तालिका coursedetails1 का नाम बदलकर coursedetails1 कर दें;

कोर्स विवरण1 से * चुनें;

#गिरता हुआ दृश्य

पाठ्यक्रम विवरण देखें;

#एकाधिक तालिकाओं पर एक दृश्य बनाना

निम्नलिखित तालिका पुस्तक पर विचार करें:

पुस्तक से * चुनें;

+——+——-+——-+

| आईडी | नाम | कीमत |

+——+——-+——-+

| 45 | गणित | 780.9 |

| 46 | इंग्लैंड 980.9 |

| 44 | हिंदी | 800.9 |

+——+——-+——-+

जब हम एक से अधिक तालिकाओं के आधार पर एक दृश्य बनाते हैं, तो क्रिएट व्यू क्वेरी में प्रत्येक चयन कथन में समान संख्या होती है।

चयन आईडी, नाम, स्टड से अंक के रूप में मल्टीपलडेटा देखें जहां अंक > 70 हैं

मिलन

पुस्तक से आईडी, नाम, कीमत चुनें;

#कॉलिंग दृश्य

एकाधिक डेटा 1 से * चुनें;

+——+—————+——-+

| आईडी | नाम | अंक |

+——+—————+——-+

| 1 | शाम | 105 |

| 2 | गीता | 93.1 |

| 3 | निर्दिष्ट नहीं | 110 |

| 4 | रिया | 78.8 |

| 5 | निर्दिष्ट नहीं | 72.9 |

| 7 | जय | 78 |

| 45 | गणित | 780.9 |

| 46 | इंग्लैंड 980.9 |

| 44 | हिंदी | 800.9 |

+——+—————+——-+

उपरोक्त तालिका में, पहले 5 रिकॉर्ड “स्टड” तालिका के हैं और शेष 4 रिकॉर्ड “बुक” तालिका के हैं।

चालू कर देना:

MySQL में ट्रिगर्स का एक सेट है एसक्यूएल कथन जो इन्सर्ट, अपडेट और डिलीट ऑपरेशन से पहले या बाद में निष्पादित किया जाएगा। दूसरे शब्दों में, हम कह सकते हैं कि ट्रिगर वे घटनाएँ हैं जो तब निष्पादित या सक्रिय हो जाती हैं जब हम सम्मिलित, अद्यतन या हटाएं जैसे 3 ऑपरेशनों में से एक करते हैं।

ट्रिगर बनाने के लिए सिंटैक्स:

सीमांकक सीमांकक_नाम

ट्रिगर एक ट्रिगर नाम बनाएं

(पहले

प्रत्येक पंक्ति के लिए

जारी रखना

#ट्रिगर कोड

#एसक्यूएल कथन

$$ ख़त्म करें

1. डालने से पहले

तालिका बनाएं व्यक्ति1(आईडी पूर्णांक प्राथमिक कुंजी, नाम वर्कर(55), आयु पूर्णांक);

#डालने से पहले => जब हम व्यक्ति1 तालिका में एक नकारात्मक आयु डालने का प्रयास कर रहे होते हैं तो निम्नलिखित ट्रिगर सक्रिय/निष्पादित होता है…और यदि आयु मान नकारात्मक है, तो यह आयु कॉलम में 0 सेट करता है।

डिलीमिटर $$

डेटा डालने से पहले एक ट्रिगर बनाएं

पर्सन 1 डालने से पहले

प्रत्येक पंक्ति के लिए

जारी रखना

यदि new.age < 0 है तो new.age=0 सेट करें;

अगर अंत;

$$ समाप्त करें

——————————————————————

नीचे दिए गए इन्सर्ट स्टेटमेंट का ट्रिगर चालू नहीं होगा क्योंकि हम उम्र के लिए एक सकारात्मक मान डाल रहे हैं

व्यक्ति1 मानों में सम्मिलित करें (103,”जय”,28);

+—–+——–+——+

| आईडी | नाम | उम्र |

+—–+——–+——+

| 103 | जय | 28 |

नीचे दिए गए इन्सर्ट स्टेटमेंट के लिए ट्रिगर सक्रिय हो जाएगा क्योंकि हम आयु कॉलम में एक नकारात्मक मान डाल रहे हैं जिसे शून्य पर सेट किया जाएगा।

व्यक्ति1 मानों में सम्मिलित करें(104,”अजय”,-13);

+—–+——–+——+

| आईडी | नाम | उम्र |

+—–+——–+——+

| 103 | जय | 28 |

| 104 | अजय | 0 |

+—–+——–+——+

2. फिर डालें

तालिका व्यक्ति2 बनाएं (आईडी पूर्णांक प्राथमिक कुंजी ऑटो_इन्क्रीमेंट, नाम वर्कर(77), जन्मतिथि);

तालिका संदेश बनाएं (आईडी int प्राथमिक कुंजी auto_increment, pid int, संदेश वर्कर (400));

जब हम पर्सन2 टेबल में डीओबी कॉलम मान को NULL के रूप में डालेंगे तो नीचे दिया गया ट्रिगर निष्पादित होगा। हमारे द्वारा शून्य मान डालने के बाद यह ट्रिगर “संदेश” तालिका में एक नया कथन सम्मिलित करता है जो व्यक्ति आईडी और संदेश को संग्रहीत करता है। “हैलो”, नया नाम, “आपकी जन्मतिथि शून्य है..कृपया वैध जन्मतिथि दर्ज करें” संदेश तालिका में

सीमांकक %%

डेटा डालने के बाद ट्रिगर बनाएं

व्यक्ति 2 पर डालने के बाद

प्रत्येक पंक्ति के लिए

जारी रखना

यदि new.dob शून्य है

संदेश (पीआईडी, संदेश) मानों में डालें (नया.आईडी, कॉनकैट (“हैलो”, नया.नाम, “आपका जन्मतिथि शून्य है..कृपया एक वैध जन्मतिथि डालें”));

अगर अंत;

अंत %%

#उपरोक्त ट्रिगर नीचे दिए गए इन्सर्ट स्टेटमेंट के लिए निष्पादित नहीं होता है क्योंकि हम DOB को शून्य के रूप में सेट नहीं करते हैं

व्यक्ति2 मानों में सम्मिलित करें(1,”राम”,”2000-03-12″);

व्यक्ति2 से * चुनें;

+—-+——-+————+

| आईडी | नाम | जन्म तिथि |

+—-+——-+————+

| 1 | राम | 2000-03-12 |

संदेश से * चुनें;

खाली सेट…

#निम्नलिखित सम्मिलित कथन के लिए उपरोक्त ट्रिगर निष्पादित किया गया है क्योंकि हमने DOB को शून्य के रूप में सेट किया है

व्यक्ति2(आईडी,नाम) मानों(2,”शम”) में सम्मिलित करें;

व्यक्ति2 से * चुनें;

+—-+——-+————+

| आईडी | नाम | जन्म तिथि |

+—-+——-+————+

| 1 | राम | 2000-03-12 |

| 2 | शाम | शून्य |

संदेश से * चुनें;

+—-+———+———————————————+

| आईडी | पिड | संदेश |

+—-+———+———————————————+

| 1 | 2 | नमस्ते शम, आपकी जन्मतिथि शून्य है..कृपया वैध जन्मतिथि दर्ज करें |

निःशुल्क, डेमो कक्षाएं कॉल करें: 020 7117 1500

पंजीकरण लिंक: पुणे में एसक्यूएल प्रशिक्षण!

2. हटाने से पहले

तालिका परिणाम बनाएं (सिड पूर्णांक प्राथमिक कुंजी, निर्मित दिनांक दिनांक, अंक पूर्णांक);

तालिका परिणाम बनाएं Delete2(id int प्राथमिक कुंजी auto_increment, sid int, createdAt date,

टाइमस्टैम्प डिफ़ॉल्ट अब हटा दिया गया है());

#जब हम परिणाम तालिका से किसी रिकॉर्ड को हटाने का प्रयास करेंगे तो निम्नलिखित ट्रिगर सक्रिय/निष्पादित होगा

#और फिर बनाई गई और हटाई गई तारीखों के साथ “resultDelete2” में एक नया रिकॉर्ड डालेगा

सीमांकक %%

डेटा हटाकर एक ट्रिगर बनाएं

परिणाम पर हटाने से पहले

प्रत्येक पंक्ति के लिए

जारी रखना

परिणाम Delete2(sid,craetedAt) मान (old.sid,old.createdDate) शामिल करें;

अंत %%

परिणाम मानों में सम्मिलित करें(1, “2024-07-01”,78);

परिणाम मानों में सम्मिलित करें(2, “2024-07-04”,98);

परिणाम मानों में सम्मिलित करें(3, “2024-06-30”,58);

परिणाम से * चुनें;

परिणामडिलीट2 से * चुनें;

परिणाम से * चुनें;

+—–+————-+——-+

| सिड | क्रिएटडेट | अंक |

+—–+————-+——-+

| 1 | 2024-07-01 | 78 |

| 2 | 2024-07-04 | 98 |

| 3 | 2024-06-30 | 58 |

+—–+————-+——-+

परिणाम से हटाएँ जहाँ sid=3; #अब डिलीट करने से पहले ट्रिगर सक्रिय हो जाएगा और नया रिकॉर्ड “रिजल्ट डिलीट2” टेबल में डाला जाएगा

परिणामडिलीट2 से * चुनें;

+—-+——+————+———————+

| आईडी | सिड | createdAt | हटा दिया गया |

+—-+——+————+———————+

| 1 | 3 | 2024-06-30 | 2024-07-16 11:02:57 |

+—-+——+————+———————+

2. अद्यतन करने से पहले

तालिका STUD1 बनाएं (sid int प्राथमिक कुंजी, नाम varchar(55), अंक int, ग्रेड varchar(200));

स्टड1(सिड,नाम) मानों(1,”अलीना”) में सम्मिलित करें;

स्टड1(सिड,नाम) मानों में सम्मिलित करें (2,”हैरी”);

stud1(sid,name) मान(3,”sam”) में डालें;

स्टड 1(सिड,नाम) मान(4,”मारिया”) में डालें;

स्टड1 से * चुनें;

+—–+———-+——-+—————+

| सिड | नाम | अंक | ग्रेड |

+—–+———-+——-+—————+

| 1 | अलीना | शून्य | शून्य |

| 2 | हैरी | शून्य| शून्य |

| 3 | सैम | शून्य | शून्य |

| 4 | मारिया | शून्य | शून्य |

+—–+———-+——-+—————+

#जब हम stud1 तालिका में अंक अद्यतन करने का प्रयास कर रहे हैं तो निम्न ट्रिगर निष्पादित होगा

जो स्टड1 टेबल में “ग्रेड” कॉलम को नए मार्क वैल्यू के साथ अपडेट करेगा

सीमांकक **

ट्रिगर अपडेटिंग डेटा बनाएं

स्टड1 पर अपडेट करने से पहले

प्रत्येक पंक्ति के लिए

जारी रखना

यदि new.marks<50 है तो new.grade=”fail” सेट करें;

अन्यथा यदि new.marks>=50 और new.marks <70 है तो new.grade=”distinction” सेट करें;

अन्यथा यदि new.marks>=70 और new.marks <=100 तो new.grade=”merit” सेट करें;

अन्यथा new.grade=’अमान्य ग्रेड’ सेट करें;

अगर अंत;

अंत **

अद्यतन स्टड1 सेट मार्क्स=66 जहां sid=1;

स्टड1 से * चुनें;

स्टड1 से * चुनें;

+—–+———-+——-+—————+

| सिड | नाम | अंक | ग्रेड |

+—–+———-+——-+—————+

| 1 | अलीना | 66 | भेद |

| 2 | हैरी | शून्य| शून्य |

| 3 | सैम | शून्य | शून्य |

| 4 | मारिया | शून्य | शून्य |

+—–+———-+——-+—————+

अद्यतन स्टड1 सेट मार्क्स=10 जहां sid=2;

अद्यतन स्टड1 सेट मार्क्स=99 जहां sid=3;

अद्यतन स्टड1 सेट मार्क्स=200 जहां sid=4;

स्टड1 से * चुनें;

+—–+———-+——-+—————+

| सिड | नाम | अंक | ग्रेड |

+—–+———-+——-+—————+

| 1 | अलीना | 66 | भेद |

| 2 | हैरी | 10 | विफल |

| 3 | अकेला | 99 | योग्यता |

| 4 | मारिया | 200 | अमान्य अंक |

+—–+———-+——-+—————+

# मौजूदा ट्रिगर्स की जाँच की जा रही है

ट्रिगर दिखाओ;

# मौजूदा ट्रिगर को छोड़ना

ड्रॉप ट्रिगर निरीक्षण पात्रता;

अधिक जानने के लिए हमारे चैनल पर जाएँ: यहाँ क्लिक करें

लेखक:-

पूजा नांदोडे-भावसार
ट्रेनर को कॉल करें और SQL के लिए अपनी निःशुल्क डेमो क्लास बुक करें!!!

© कॉपीराइट 2020 | सेवेनमेंटर प्राइवेट लिमिटेड

Leave a Reply