2009-12-14 14 views
5

में कॉलम पर सभी कार्यात्मक इंडेक्स कैसे प्राप्त करें मेरे पास एक प्रोग्राम है जो डेटाबेस रूपांतरण प्रक्रिया के हिस्से के रूप में संशोधित करने के लिए कॉलम के लिए डेटाबेस खोजता है।ओरेकल

अगर मैं एक कार्यात्मक सूची परिभाषित करने के साथ एक स्तंभ में परिवर्तन करने का प्रयास निम्न त्रुटि देता है:

ORA-30556: functional index is defined on the column to be modified 

Looking up the ORA code, समाधान "स्तंभ संशोधित करने के लिए प्रयास करने से पहले कार्यात्मक सूचकांक ड्रॉप।"

बढ़िया! तो मैं उस कॉलम पर सभी कार्यात्मक अनुक्रमणिका कैसे ढूंढूं?

user_ind_columns व्यू अच्छी शुरुआत की तरह दिखता है, लेकिन कार्यात्मक अनुक्रमणिका में उनके COLUMN कॉलम में "SYS_NC00042 $" जैसी चीजें हैं। अन्य user_ विचारों के आसपास देख रहे हैं, मुझे कुछ भी स्पष्ट नहीं दिख रहा है। क्या मैं कुछ भूल रहा हूँ?

या क्या मैं इस बारे में गलत तरीके से जा रहा हूं?

उत्तर

11

तालिका user_ind_expressions फ़ंक्शन आधारित इंडेक्स के अभिव्यक्तियों का वर्णन करती है।

Oracle 11.2 link

+0

मैं सिर्फ स्तंभ नाम के लिए उम्मीद कर रही थी, लेकिन मैं '% स्तंभ%' की तरह का उपयोग कर मान लें कि 'झूठे का एक resonably कम संभावना है सकारात्मक (जो वैसे भी एक त्रासदी नहीं हैं)। –

+0

मुझे बेहतर तरीके से पता नहीं है। – Khb

+1

लिंक अब मान्य नहीं है –

5

USER_INDEXES की INDEX_TYPE कॉलम पर गौर करें:

select table_name, index_name, index_type 
from user_indexes 
where index_type like 'FUNCTION%' 
order by table_name, index_name 

TABLE_NAME      INDEX_NAME      INDEX_TYPE     
------------------------------ ------------------------------ --------------------------- 
SOME_TABLE      SOME_TABLE_FUNC_INDEX   FUNCTION-BASED NORMAL 
+0

जो आपको तालिका पर कोई भी कार्यात्मक अनुक्रमणिका दिखाता है, लेकिन यह किसी विशेष कॉलम को संदर्भित करने वाले सूचकांक, यदि कोई है, की पहचान करने में सहायता नहीं करता है। –