2012-01-18 13 views
13

मेरे पास कुछ गैर-अद्वितीय बाधाएं हैं जिन्हें मैं अनन्य बाधाओं में बदलना चाहता हूं (डेटा मॉडल के बाद से व्यवसाय नियम बदल गए हैं)। क्या एक अद्वितीय बाधा के रूप में बाहर निकलने और पुनर्निर्माण के साथ ऐसा करने का कोई तरीका है? मैं सोच रहा था कि alter constraint कमांड में कोई विकल्प होगा, लेकिन मुझे कुछ भी नहीं मिला है।एक अनन्य इंडेक्स को एक अनन्य इंडेक्स में बदलें

धन्यवाद !!

उत्तर

2

आप जिस तरह से चाहते हैं उसमें एक बाधा को संशोधित नहीं कर सकते हैं, जिसे आप केवल छोड़ सकते हैं और इसे फिर से बना सकते हैं। यदि आप इसे डाउनटाइम के साथ करना चाहते हैं तो DBMS_REDEFINITION पैकेज में देखें।

5

आप एक गैर-अद्वितीय सूचकांक को एक अद्वितीय अनुक्रमणिका में परिवर्तित नहीं कर सकते हैं।

(यह कहना मुश्किल है कि क्या नहीं किया जा सकता है। मैं इस शब्द को SQL भाषा संदर्भ के ALTER INDEX पृष्ठ पर देखकर, अद्वितीय शब्द खोज रहा हूं, और कोई प्रासंगिक संकेत नहीं ढूंढ रहा हूं। मैंने इसके बजाय 11 जी देखा 10 जी का, लेकिन यह संभवतः इस मामले में बेहतर है क्योंकि 10 जी में मौजूद कुछ विशेषताएं हैं लेकिन केवल 11 जी में दस्तावेज हैं।)

हालांकि, आप एक अद्वितीय बाधा के लिए एक गैर-अद्वितीय इंडेक्स का उपयोग कर सकते हैं। लेकिन कुछ performance considerations हैं: एक अद्वितीय सूचकांक छोटा और तेज़ होगा।

create table my_table(a number); 

create index my_table_index on my_table(a); 

alter table my_table add constraint my_table_unique unique (a) 
    using index my_table_index; 
2

मेरे मामले में, बस छोड़ करते हैं और सूचकांक फिर से बनाते हैं:

DROP INDEX index_name; 
CREATE UNIQUE INDEX index_name ON table_name (col01,col02) TABLESPACE indx; 
संबंधित मुद्दे