"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > SQL में समान टेबल पर अपडेट के बाद मैं ट्रिगर के भीतर किसी टेबल को सुरक्षित रूप से कैसे अपडेट कर सकता हूं?

SQL में समान टेबल पर अपडेट के बाद मैं ट्रिगर के भीतर किसी टेबल को सुरक्षित रूप से कैसे अपडेट कर सकता हूं?

2024-12-22 को प्रकाशित
ब्राउज़ करें:937

How Can I Safely Update a Table Within a Trigger After an Update on the Same Table in SQL?

एक ही टेबल पर अपडेट के बाद एक ट्रिगर में एक टेबल को अपडेट करना

एसक्यूएल में, एक ही टेबल पर अपडेट के बाद एक ट्रिगर में एक टेबल को अपडेट करना वही तालिका एक संभावित समस्या प्रस्तुत करती है। ऐसा इसलिए है क्योंकि अद्यतन कार्रवाई के लिए तालिका पहले से ही लॉक है, और उसी लेन-देन के हिस्से के रूप में निष्पादित ट्रिगर के भीतर तालिका तक पहुंचने का प्रयास करने पर विरोध हो सकता है।

इस प्रतिबंध से बचने के लिए, आप अपडेट कर सकते हैं AFTER के बजाय BEFORE विकल्प का उपयोग करके ट्रिगर में प्रभावित कॉलम। यह आपको मूल अद्यतन कार्रवाई होने से पहले तालिका के कॉलम को अपडेट करने की अनुमति देता है, यह सुनिश्चित करते हुए कि लेनदेन को अंतिम रूप देने से पहले तालिका में आवश्यक परिवर्तन किए गए हैं।

निम्नलिखित उदाहरण पर विचार करें:

CREATE TRIGGER upd_total_votes BEFORE UPDATE ON products_score
FOR EACH ROW
BEGIN
    SET new.votes_total = new.votes_1   new.votes_2   new.votes_3   new.votes_4   new.votes_5
END
;

इस उदाहरण में, ट्रिगर product_score तालिका पर प्रत्येक अद्यतन ऑपरेशन से पहले निष्पादित होगा। यह अपडेट किए गए कॉलम (वोट_1 से वोट_5) के मानों के आधार पर वोट_टोटल कॉलम के लिए नए मान की गणना करेगा और इसे ट्रिगर संदर्भ द्वारा प्रदान किए गए नए.वोट्स_टोटल वर्चुअल कॉलम में संग्रहीत करेगा।

जब आप तालिका अपडेट करते हैं , ट्रिगर यह सुनिश्चित करेगा कि वोट_टोटल कॉलम तदनुसार अपडेट किया गया है, भले ही अपडेट स्टेटमेंट स्पष्ट रूप से वोट_टोटल कॉलम को अपडेट नहीं करता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3