एक बाधा आपको उस डेटा पर प्रतिबंध लगाने की अनुमति देता है जिसे किसी नोड या संबंध के विरुद्ध दर्ज किया जा सकता है।
बाधाएं डेटा अखंडता को लागू करने में मदद करती हैं, क्योंकि वे उपयोगकर्ताओं को गलत प्रकार के डेटा में प्रवेश करने से रोकती हैं। यदि कोई बाधा लागू होने पर गलत प्रकार का डेटा दर्ज करने का प्रयास करता है, तो उसे एक त्रुटि संदेश प्राप्त होगा।
प्रतिबंध प्रकार
Neo4j में, आप अद्वितीयता बना सकते हैं बाधाएं और संपत्ति अस्तित्व प्रतिबंध।
- विशिष्टता बाधा
- निर्दिष्ट करता है कि संपत्ति में एक अद्वितीय मान होना चाहिए (यानी कलाकार के साथ कोई दो नोड नहीं हैं। लेबल नाम . के लिए एक मान साझा कर सकता है संपत्ति।)
- संपत्ति के अस्तित्व की बाध्यता
- सुनिश्चित करता है कि एक विशिष्ट लेबल वाले सभी नोड्स के लिए या एक विशिष्ट प्रकार के साथ सभी संबंधों के लिए एक संपत्ति मौजूद है। संपत्ति अस्तित्व की बाधाएं केवल Neo4j एंटरप्राइज़ संस्करण में उपलब्ध हैं।
विशिष्टता प्रतिबंध बनाएं
Neo4j में एक विशिष्ट बाधा उत्पन्न करने के लिए, CREATE CONSTRAINT ON
का उपयोग करें। बयान। इस तरह:
CREATE CONSTRAINT ON (a:Artist) ASSERT a.Name IS UNIQUE
उपरोक्त उदाहरण में, हम एक विशिष्टता बनाते हैं नाम . पर प्रतिबंध कलाकार . के साथ सभी नोड्स की संपत्ति लेबल।
जब कथन सफल होता है, तो निम्न संदेश प्रदर्शित होता है:
जब आप एक बाधा बनाते हैं, तो Neo4j एक इंडेक्स बनाएगा। अन्य इंडेक्स की तरह ही साइफर लुकअप के लिए उस इंडेक्स का इस्तेमाल करेगा।
इसलिए, एक अलग अनुक्रमणिका बनाने की कोई आवश्यकता नहीं है। वास्तव में, यदि आप पहले से ही एक इंडेक्स होने पर एक बाधा बनाने की कोशिश करते हैं, तो आपको एक त्रुटि मिलेगी।
प्रतिबंध देखें
बाधाएं (और अनुक्रमणिका) (वैकल्पिक) डेटाबेस स्कीमा का हिस्सा बन जाती हैं।
हम :schema
. का उपयोग करके हमारे द्वारा अभी बनाई गई बाधा को देख सकते हैं आज्ञा। इस तरह:
:schema
आप नव निर्मित बाधा, साथ ही इसके साथ बनाई गई अनुक्रमणिका देखेंगे। हम पहले बनाए गए इंडेक्स को भी देख सकते हैं:
बाधा का परीक्षण करें
आप एक ही कलाकार को दो बार बनाने का प्रयास करके परीक्षण कर सकते हैं कि बाधा वास्तव में काम करती है।
निम्नलिखित कथन को दो बार चलाएँ:
CREATE (a:Artist {Name: "Joe Satriani"}) RETURN a
पहली बार जब आप इसे चलाते हैं, तो नोड बनाया जाएगा। जब आप इसे दूसरी बार चलाते हैं, तो आपको निम्न त्रुटि संदेश प्राप्त होना चाहिए:
संपत्ति के अस्तित्व की बाधाएं
संपत्ति अस्तित्व बाधाओं का उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि एक निश्चित लेबल वाले सभी नोड्स में एक निश्चित संपत्ति हो। उदाहरण के लिए, आप निर्दिष्ट कर सकते हैं कि कलाकार . के साथ लेबल किए गए सभी नोड एक नाम होना चाहिए संपत्ति।
एक संपत्ति अस्तित्व बाधा बनाने के लिए, ASSERT exists(variable.propertyName)
का उपयोग करें वाक्य रचना।
इस तरह:
CREATE CONSTRAINT ON (a.Artist) ASSERT exists(a.Name)
ध्यान दें कि संपत्ति अस्तित्व की बाधाएं केवल Neo4j एंटरप्राइज़ संस्करण में उपलब्ध हैं।