समस्या:
आप SQL सर्वर डेटाबेस में बाधाओं के डिफ़ॉल्ट नाम जानना चाहते हैं।
उदाहरण:
हमारे डेटाबेस में, हम दो टेबल बनाते हैं, country और student , निम्नलिखित बाधाओं के साथ:PRIMARY KEY (स्तंभ id तालिकाओं में country और student ), FOREIGN KEY (स्तंभ country_id तालिका में student ), DEFAULT (स्तंभ name तालिका में student ), UNIQUE (स्तंभ name तालिका में country और कॉलम personal_number तालिका में student ), और CHECK (स्तंभ age तालिका में student )।
समाधान:
CREATE TABLE country ( id int NOT NULL primary key, name varchar(100) UNIQUE ); CREATE TABLE student ( id int NOT NULL primary key, name varchar(100) NOT NULL DEFAULT 'unknown', personal_number varchar(100) UNIQUE, age int CHECK(age>15), country_id int FOREIGN KEY references country(id) );
आइए प्रदर्शित करें कि SQL सर्वर डिफ़ॉल्ट रूप से इन तालिकाओं की बाधाओं को कैसे नाम देता है। उन्हें देखने के लिए इस क्वेरी का उपयोग करें:
SELECT TABLE_CATALOG, TABLE_NAME,
CONSTRAINT_TYPE,CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
ये रहा परिणाम:
| TABLE_NAME | CONSTRAINT_TYPE | CONSTRAINT_NAME |
|---|---|---|
| देश | प्राथमिक कुंजी | PK__देश__3213E83F7EFD826D |
| देश | अद्वितीय | UQ__देश__72E12F1BB69A1D8C |
| विद्यार्थी | प्राथमिक कुंजी | PK__student__3213E83F357C7D1D |
| विद्यार्थी | अद्वितीय | UQ__student__24E2EDD2AC2A7D87 |
| विद्यार्थी | जांच करें | CK__student__age__4E88ABD4 |
| विद्यार्थी | विदेशी कुंजी | FK__student__country__4F7CD00D |
चर्चा:
जब हम अपनी तालिकाएँ बनाते हैं, तो हम कुछ स्तंभों के लिए बाधाएँ निर्धारित करते हैं। हालाँकि, हम इन बाधाओं के लिए नाम निर्दिष्ट नहीं करते हैं, इसलिए उन्हें डिफ़ॉल्ट रूप से नाम दिया जाता है। बाधाओं के लिए डिफ़ॉल्ट नाम कैसे उत्पन्न होते हैं?
SQL सर्वर में, डिफ़ॉल्ट बाधा नाम विशिष्ट उपसर्गों से शुरू होते हैं:PK , UQ , CK , या FK ।
PRIMARY KEY . के लिए डिफ़ॉल्ट नाम बाधा 'PK . से शुरू होती है ', उसके बाद अंडरस्कोर ('__ .) '), तालिका का नाम, अधिक अंडरस्कोर ('__ '), और SQL सर्वर द्वारा उत्पन्न एक हेक्साडेसिमल अनुक्रम संख्या। हमारे उदाहरण में, PK__country__3213E83F7EFD826D तालिका में प्राथमिक कुंजी बाधा के लिए डिफ़ॉल्ट नाम है country और PK__student__3213E83F357C7D1D तालिका में प्राथमिक कुंजी बाधा के लिए डिफ़ॉल्ट नाम है student ।
FOREIGN KEY . के लिए डिफ़ॉल्ट नाम बाधा 'FK . से शुरू होती है ', उसके बाद अंडरस्कोर ('__ .) '), तालिका का नाम, अधिक अंडरस्कोर ('__ '), संबंधित तालिका का नाम, और SQL सर्वर द्वारा उत्पन्न एक हेक्साडेसिमल अनुक्रम संख्या। हमारे उदाहरण में, FK__student__country__4F7CD00D तालिका में विदेशी कुंजी बाधा के लिए डिफ़ॉल्ट नाम है student जो कॉलम id . के बराबर है तालिका में country ।
UNIQUE . के लिए डिफ़ॉल्ट नाम बाधा है 'UQ ', अंडरस्कोर ('__ '), तालिका का नाम, अधिक अंडरस्कोर ('__ '), और SQL सर्वर द्वारा उत्पन्न एक हेक्साडेसिमल अनुक्रम संख्या। हमारे उदाहरण में, UQ__country__72E12F1BB69A1D8C तालिका में कॉलम नाम के लिए अद्वितीय बाधा का डिफ़ॉल्ट नाम है country , और UQ__student__24E2EDD2AC2A7D87 UNIQUE . का तालिका के कॉलम नाम के लिए बाधा student . UNIQUE एक से अधिक स्तंभों वाली बाधाओं को एक समान पैटर्न में नाम दिया गया है।
CHECK . के लिए डिफॉल्ट नाम बाधा है 'CK ', अंडरस्कोर ('__ '), तालिका का नाम, अधिक अंडरस्कोर ('__ '), कॉलम नाम, अधिक अंडरस्कोर ('__'), और SQL सर्वर द्वारा उत्पन्न एक हेक्साडेसिमल अनुक्रम संख्या। हमारे उदाहरण में, CK__student__age__4E88ABD4 CHECK . का डिफॉल्ट नाम है कॉलम के लिए बाधा age तालिका का student ।