2012-04-23 15 views
5

मैंने इंटरनेट के माध्यम से खोज की है, और समझते हैं कि एक स्टोर प्रक्रिया के शरीर को बदलने का एकमात्र तरीका ड्रॉप और इसे फिर से बनाना है। तंत्र के साथ कुछ भी गलत नहीं लगता है, लेकिन यदि मेरे पास क्लाइंट एप्लिकेशन (या हजारों वितरित क्लाइंट) हैं जो सर्वर डेटाबेस पर कुछ डेटा अपडेट करने के लिए स्टोर प्रक्रिया का आह्वान करते रहते हैं, तो प्रक्रिया को छोड़कर डेटा खो गया और/या भ्रष्टाचार होगा।MySQL: संग्रहित प्रक्रियाओं को परमाणु रूप से कैसे संशोधित करें?

मैं सोच रहा हूं कि "क्रिएटिव IF EXIST ..." जैसे सिंटैक्स हैं या कुछ ऐसा ही काम करता है ताकि अपडेट ऑपरेशन सुचारु रूप से किया जा सके। फिर भी मुझे ऐसी चीज नहीं मिली जो MySQL में उपलब्ध है।

तो आप कैसे सोचते हैं कि इस मुद्दे को संबोधित किया जा सकता है? बहुत बढ़िया विचार?

+0

चूंकि MySQL में लेनदेन डीडीएल नहीं है, मुझे नहीं लगता कि यह संभव होगा। –

उत्तर

3

आप MySQL में संग्रहीत प्रक्रिया को संशोधित नहीं कर सकते (हालांकि आप इसकी विशेषताओं को बदल सकते हैं)। ALTER PROCEDURE पृष्ठ से।

यह कथन संग्रहीत प्रक्रिया की विशेषताओं को बदलने के लिए उपयोग किया जा सकता है। एक से अधिक परिवर्तन एक वैकल्पिक प्रक्रिया कथन में निर्दिष्ट किया जा सकता है। हालांकि, आप इस कथन का उपयोग कर संग्रहीत प्रक्रिया के पैरामीटर या निकाय को नहीं बदल सकते हैं; इस तरह के परिवर्तन करने के लिए, आपको ड्रॉप और प्रक्रिया को डीआरओपी प्रक्रिया का उपयोग करके प्रक्रिया को दोबारा बनाना होगा और प्रक्रिया बनाएं।

हालांकि इस अद्यतन को करने के दौरान डेटा खोना संभव है (हालांकि यह अपेक्षाकृत छोटी खिड़की होनी चाहिए), यह संभावना नहीं है कि आपका डेटा दूषित हो जाएगा। यदि डेटाबेस सिस्टम डाउनटाइम से डेटा हानि के खिलाफ आपके सिस्टम की सुरक्षा की आवश्यकता है तो मैं संदेश क्यूइंग प्रौद्योगिकियों पर एक नज़र डालेगा।

+0

डेटा दूषित होने के कारण मेरा मतलब डेटाबेस की अखंडता है ... आपके पास एक अच्छा बिंदु है, इसलिए डेटाबेस पर सभी काम डालने की बजाय डेटा लेनदेन को नजरअंदाज करने के लिए शीर्ष पर एक अलग परत हो सकती है। –

संबंधित मुद्दे