2009-08-27 9 views
5

मेरे पास एक कॉलम में एक कॉलम की जांच करने के लिए एक ट्रिगर है, जब उस कॉलम में अपडेट (अद्यतन के बाद) होता है तो मेरा ट्रिगर कॉल किया जाता है और फिर मैं कुछ ट्रिगर तर्क करने के लिए एक संग्रहित प्रक्रिया को अपने ट्रिगर के भीतर से कॉल करता हूं जावा में कोडितओरेकल में कई तालिकाओं में अपडेट के लिए आप कैसे जांचते हैं?

अभी तक, बहुत अच्छा है। अब चीजें अधिक जटिल हो रही हैं, एक नई आवश्यकता है जिसका तात्पर्य है कि उसी तर्क (ट्रिगर द्वारा निष्पादित तर्क) भी किया जाना चाहिए यदि अन्य 4 टेबल में कॉलम में बदलाव हो। मुझे लगता है कि अलग-अलग कॉलम सुनने के लिए 5 अलग-अलग तालिकाओं में एक ही ट्रिगर रखना व्यावहारिक नहीं है, और मुझे यकीन नहीं है कि मुझे इन कॉलम के लिए "व्यू" बनाने पर विचार करना चाहिए और उस दृश्य में एक ट्रिगर डालना चाहिए (लागत क्या है प्रदर्शन और/या संसाधनों के मामले में भुगतान करने के लिए?)

ओरेकल के साथ आपके पिछले अनुभव में, इस परिदृश्य के लिए आपका दृष्टिकोण या समाधान क्या रहा है?

उत्तर

2
  1. क्या आप वास्तव में प्रश्न में सभी तालिकाओं में शामिल होने के लिए एक दृश्य बना सकते हैं? क्या उनके पास एक दूसरे के लिए विदेशी कुंजी है?
  2. मान लीजिए कि आप एक दृश्य बना सकते हैं, क्या सभी तालिका जटिल दृश्य का उपयोग करके अद्यतन हो सकती हैं? इस पर गंभीर सीमाएं हैं।
  3. आम तौर पर, हम केवल एक दृश्य पर ट्रिगर की स्थापना करते हैं। UPDATE परिचालनों के आधार पर ट्रिगर्स पर भी प्रतिबंध हैं। शामिल मुद्दों की एक पूरी सूची के लिए करने के लिए

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7004.htm#SQLRF01405

नोट देखें: मैं यह सोचते हैं हूँ Oracle DB है आप ओरेकल

साथ अपने प्रश्न टैग किया है के रूप में
+0

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

+0

धन्यवाद बीकेएम, हम इस दृष्टिकोण को लागू करने वाले थे (INSTEAD OF), लेकिन हमें कुछ तकनीकी सीमाओं और बाधाओं का सामना करना पड़ा जिन्हें हम पार नहीं कर सके। –

5

एक ही तरीका है कि आप एकके लिए ट्रिगर कई तालिकाओं का उपयोग कर सकते हैं दृश्य बनाने के लिए है।

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

+0

हमने अंततः कुछ उद्देश्यों के लिए एक दृष्टिकोण का उपयोग करके एक दृष्टिकोण का उपयोग करने का निर्णय लिया लेकिन हमें कुछ विशिष्ट उद्देश्यों के लिए डिजाइन में कुछ ट्रिगर्स रखना पड़ा। आपका उत्तर सबसे अच्छा काम है जिसे हमने करने का फैसला किया, लेकिन अन्य सुझाव बहुत अच्छे थे और वास्तव में भी विचार किए गए थे। धन्यवाद स्वेतलोजर! –

2

क्यों एक संग्रहीत में अपने तर्क नहीं प्रक्रिया, तो बस ट्रिगर से कॉल करें?

मैं यह भी सुझाव दूंगा कि आप change notification पर उस ध्वनि से देखें, शायद यह कि आप केवल एक सादे पुराने ट्रिगर से ज्यादा चाहते हैं।

बाहरी संसाधनों को कॉल करते समय भी सावधान रहें। जो भी आप ट्रिगर में कॉल करते हैं वह लेन-देन होना चाहिए, क्योंकि आपके डीएमएल वास्तव में पूरा होने से पहले ओरेकल कई बार ट्रिगर चला सकता है।

+0

विशेष रूप से ट्रिगर्स के भीतर लेनदेन संबंधी संचालन के बारे में अनुस्मारक के लिए धन्यवाद, जिसने मुझे उम्मीदवार समाधान के साथ समस्या को इंगित करने में मदद की। फिर से धन्यवाद! –

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