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

मैं MySQL ट्रिगर के भीतर उसी तालिका को कैसे अपडेट कर सकता हूं?

2024-11-18 को प्रकाशित
ब्राउज़ करें:237

How can I update the same table within a MySQL trigger?

एक ही तालिका को अपडेट करने के लिए MySQL ट्रिगर वर्कअराउंड

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

सुझाया गया समाधान

ट्रिगर के भीतर पंक्तियों को सीधे अपडेट करने के बजाय, एक संग्रहीत प्रक्रिया का लाभ उठाएं जो वांछित तर्क को निष्पादित करता है। यह विधि पंक्ति अद्यतन कार्य को ट्रिगर से अलग करती है और आपको प्रतिबंध से बचने की अनुमति देती है।

उदाहरण

निम्न परिदृश्य पर विचार करें:

CREATE TABLE MyTable (
  id INT PRIMARY KEY,
  attribute VARCHAR(255)
);

-- Trigger to insert a row into MyTable for each new parent product record
CREATE TRIGGER my_trigger AFTER INSERT ON Products
FOR EACH ROW
BEGIN
  -- Issue SQL statement to call a stored procedure that performs the insert
  CALL insert_attribute(NEW.id, 'Value');
END;

उपरोक्त उदाहरण में, जब उत्पाद तालिका में एक नया रिकॉर्ड डाला जाता है, तो ट्रिगर my_trigger MyTable में एक पंक्ति डालने के लिए संग्रहीत प्रक्रिया Insert_attribute को कॉल करता है, जो प्रभावी रूप से सीधे पंक्ति अद्यतन की कार्यक्षमता की नकल करता है। ट्रिगर।

अतिरिक्त विचार

हालांकि यह समाधान एक कार्यात्मक समाधान के रूप में कार्य करता है, यह ध्यान रखना महत्वपूर्ण है कि यह प्रदर्शन और रखरखाव के मामले में पारंपरिक ट्रिगर से भिन्न है। प्रत्यक्ष ट्रिगर अपडेट की तुलना में संग्रहीत प्रक्रियाएं डेटाबेस सिस्टम में अतिरिक्त ओवरहेड और जटिलता ला सकती हैं।

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

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

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

Copyright© 2022 湘ICP备2022001581号-3