PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL UNIQUE बाधा को कैसे लागू करता है/यह किस प्रकार की अनुक्रमणिका का उपयोग करता है?

<ब्लॉकक्वॉट>

या - एक अनुक्रमणिका बनाएं और यह न मानें कि मान अद्वितीय हैं

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

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

<ब्लॉकक्वॉट>

विकल्प बीट्री, हैश, जिस्ट और जिन हैं। डिफ़ॉल्ट विधि btree है।

एक बाधा जोड़ना केवल विहित तरीका है जो भविष्य के संस्करणों में नहीं टूटेगा जहां यह कर सकता था अलग तरीके से लागू किया जाए। बस इतना ही।

और नहीं, एक अद्वितीय बाधा केवल एक बुनियादी btree . के साथ क्रियान्वित किया जा सकता है PostgreSQL v14 तक और सहित सभी संस्करणों में index. मैं यहां मैनुअल में "ADD table_constraint_using_index" पैराग्राफ उद्धृत करता हूं:

<ब्लॉकक्वॉट>

अनुक्रमणिका में व्यंजक स्तंभ नहीं हो सकते और न ही आंशिक अनुक्रमणिका हो सकती है। साथ ही, यह डिफ़ॉल्ट सॉर्ट क्रम के साथ एक बी-ट्री इंडेक्स होना चाहिए।

###अन्य अंतर

  • अद्वितीय बाधाओं को स्थगित किया जा सकता है . अद्वितीय अनुक्रमणिका के लिए यह संभव नहीं है। SET CONSTRAINTS पर एक नजर डालें आदेश दें और अधिक के लिए लिंक का अनुसरण करें।
<स्ट्राइक>- एक **विदेशी कुंजी** *सिर्फ* एक अद्वितीय इंडेक्स वाले कॉलम को संदर्भित नहीं कर सकता। [मैनुअल:] [4] <ब्लॉकक्वाट>

एक विदेशी कुंजी को उन स्तंभों का संदर्भ देना चाहिए जो या तो प्राथमिक कुंजी हैं या एक अद्वितीय बाधा बनाते हैं।

आखिरी बिट पुराना लगता है या गेटगो से गलतफहमी है। देखें:

  • सूचना स्कीमा में Referential_constraints.unique_constraint_* कॉलम के लिए NULL मान

संबंधित:

  • जब मुझे एक ऑपरेटर वर्ग के साथ एक अनुक्रमणिका की आवश्यकता होती है, तो क्या अद्वितीय अनुक्रमणिका अद्वितीय बाधा से बेहतर होती है



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कॉपी कैसे काम करती है और यह INSERT से इतनी तेज क्यों है?

  2. Docker कंटेनर पर PostgreSQL डेटाबेस से कनेक्ट करें

  3. PITR करते समय, क्या PostgreSQL में विराम देना/फिर से शुरू करना संभव होगा?

  4. पोस्टग्रेज क्वेरी प्लान क्यों पंक्ति अनुमान इतना गलत है

  5. PostgreSQL - डेटाबेस का नाम बदलें