2011-09-16 15 views
8

जब मैं एक मेज पर मूल्यों डालने के लिए कोशिश कर रहा हूँ यह त्रुटि हो रहा है में हो रहा "डेटा हेरफेर आपरेशन इस दृश्य पर कानूनी नहीं" उपयोगकर्ता से संबंधित जो मैं उपयोग कर रहा हूँ:एक उपयोगकर्ता तालिका

SQL Error: ORA-01732: data manipulation operation not legal on this view 
*Cause:  
*Action: 

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

तो, इस दृश्य के साथ इलगल ऑपरेशन करने की कोशिश करने से परे ऐसा कोई अन्य कारण नहीं है?

+1

कोई ट्रिगर्स हैं? – Randy

उत्तर

3

मैं एसक्यूएल ट्रेसिंग को सक्रिय करता हूं और फिर सम्मिलित करने की कोशिश करता हूं, फिर यह निर्धारित करने के लिए ट्रेस फ़ाइल को देखें कि SQL कथन त्रुटि का कारण बन रहा है।

यदि, दूसरों द्वारा सुझाए गए अनुसार, यह कुछ अन्य ऑब्जेक्ट के खिलाफ ट्रिगर द्वारा निष्पादित एसक्यूएल है, तो आप देखेंगे कि ट्रेस में रिकर्सिव एसक्यूएल के रूप में और यह स्पष्ट होगा कि ऑब्जेक्ट किस प्रकार शामिल है।

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

यदि यह वास्तव में केवल एक टेबल है, और इसमें कोई रिकर्सिव एसक्यूएल शामिल नहीं है, तो ऐसा लगता है कि आपके पास ओरेकल समर्थन का मामला है।

+1

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

3

पहली बात: क्या आप वास्तव में सुनिश्चित करें कि यह एक तालिका है? जिस तरह से आपने सवाल तैयार किया है, वैसे ही यह हो सकता है कि इस समस्या का सामना करने वाले उपयोगकर्ता के पास टेबल नहीं है। इस मामले में, शायद एक समानार्थी या कुछ ऐसा है जो वास्तव में एक दृश्य पर इंगित कर रहा है।

दूसरी बात यह हो सकती है, अगर टेबल पर ट्रिगर है और यह वह समस्या है जो समस्या को उत्पन्न करती है।

+0

हाय, हाँ, मुझे सच में यकीन है कि यह एक टेबल है। मैं इसे स्कीमा समेत बहुत से उपयोगकर्ताओं के साथ करने का प्रयास करता हूं, और उसके बाद मैं दूसरों के लिए विशेषाधिकार देता हूं जो उपयोगकर्ता आइसर्ट करने का प्रयास करते हैं लेकिन यह काम नहीं करता है। यह समानार्थी नहीं है, लेकिन, मैं ओरेकल एसक्यूएल डेवलपर के साथ काम कर रहा हूं, और टूल को तालिका का एसक्यूएल कोड नहीं मिला है, इसका मतलब यह हो सकता है कि तालिका दूषित हो गई है या ऐसा कुछ भी है? धन्यवाद –

+1

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

+0

@ थिगोगोमोलो - मैं पहले अनुच्छेद के अंत में लगभग "या एक भौतिक दृश्य" शामिल करता हूं। इच्छा है कि अब मैं :) – APC

1

सोचा एक और ...

इस तरह की मेज पर एक स्पष्ट पहचान के साथ प्रयास करें:

insert into myschema.mytable() values()... 

सिर्फ मामले में एक और एक स्थानीय रूप से है ..

4

एक वैकल्पिक जवाब : जब मैंने भौतिक दृश्य तालिका में रिकॉर्ड दर्ज करने का प्रयास किया तो मैं इस त्रुटि में आया।

+1

यह महसूस करने में थोड़ी देर लग गई कि जिस तालिका में मैंने डालने की कोशिश की, वास्तव में भौतिक दृश्य से संबंधित .. – Sonata

2

मेरा अनुमान है कि आप एक भौतिक दृश्य को देख रहे हैं और तालिका नहीं है।

Select from user_objects 

ऑब्जेक्ट प्रकार को देखने के लिए शब्दकोश में खोजें।

1

मुझे पता है कि यह एक पुरानी पुरानी पोस्ट है, लेकिन एफवाईआई, "टेबल" वास्तव में एक भौतिक दृश्य (दृश्य) है। Mview को अद्यतनों की अनुमति देने के लिए कॉन्फ़िगर नहीं किया गया है और इसलिए आप उस पर सम्मिलित/अद्यतन/हटा नहीं सकते हैं।

आप चलाकर अपने materialized विचारों के सभी की एक सूची प्राप्त कर सकते हैं: इस त्रुटि जारी करने के लिए

select * from user_mviews 
0

एक और मामला है जब आप एक स्तंभ है कि मौजूद नहीं का उपयोग कर डेटा अद्यतन करने के लिए कोशिश कर रहे हैं:

update house set color = 'blue' where street = 'ABC'; 

street स्तंभ तालिका में नहीं मौजूद है करता house

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