या - एक अनुक्रमणिका बनाएं और यह न मानें कि मान अद्वितीय हैं
यह है यह मान लेना सुरक्षित है कि मान हैं अद्वितीय, यदि आपके पास एक अद्वितीय अनुक्रमणिका परिभाषित है। इस तरह अद्वितीय बाधाओं को लागू किया जाता है (उस समय, और शायद भविष्य के सभी संस्करणों में भी)।
एक UNIQUE
परिभाषित करना बाधा प्रभावी रूप से वही करती है (लगभग, नीचे देखें) अनुक्रमणिका प्रकार निर्दिष्ट किए बिना एक अद्वितीय अनुक्रमणिका बनाने के रूप में। और, मैं मैनुअल को उद्धृत करता हूं:
विकल्प बीट्री, हैश, जिस्ट और जिन हैं। डिफ़ॉल्ट विधि btree है।
एक बाधा जोड़ना केवल विहित तरीका है जो भविष्य के संस्करणों में नहीं टूटेगा जहां यह कर सकता था अलग तरीके से लागू किया जाए। बस इतना ही।
और नहीं, एक अद्वितीय बाधा केवल एक बुनियादी btree . के साथ क्रियान्वित किया जा सकता है PostgreSQL v14 तक और सहित सभी संस्करणों में index. मैं यहां मैनुअल में "ADD table_constraint_using_index" पैराग्राफ उद्धृत करता हूं:
<ब्लॉकक्वॉट>अनुक्रमणिका में व्यंजक स्तंभ नहीं हो सकते और न ही आंशिक अनुक्रमणिका हो सकती है। साथ ही, यह डिफ़ॉल्ट सॉर्ट क्रम के साथ एक बी-ट्री इंडेक्स होना चाहिए।
###अन्य अंतर
- अद्वितीय बाधाओं को स्थगित किया जा सकता है . अद्वितीय अनुक्रमणिका के लिए यह संभव नहीं है।
SET CONSTRAINTS
पर एक नजर डालें आदेश दें और अधिक के लिए लिंक का अनुसरण करें।
एक विदेशी कुंजी को उन स्तंभों का संदर्भ देना चाहिए जो या तो प्राथमिक कुंजी हैं या एक अद्वितीय बाधा बनाते हैं।
स्ट्राइक>आखिरी बिट पुराना लगता है या गेटगो से गलतफहमी है। देखें:
- सूचना स्कीमा में Referential_constraints.unique_constraint_* कॉलम के लिए NULL मान
संबंधित:
- जब मुझे एक ऑपरेटर वर्ग के साथ एक अनुक्रमणिका की आवश्यकता होती है, तो क्या अद्वितीय अनुक्रमणिका अद्वितीय बाधा से बेहतर होती है