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

SQL सर्वर में डिफ़ॉल्ट बाधा नाम क्या है?

समस्या:

आप 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बेहतर स्क्रिप्ट जो SQL सर्वर में SERVERPROPERTY () से सभी गुण लौटाती है

  2. SQL सर्वर में ON DELETE SET NULL विकल्प के साथ विदेशी कुंजी बाधा कैसे बनाएं - SQL सर्वर / TSQL ट्यूटोरियल भाग 81

  3. SQL सर्वर डेटाबेस TempDB की अप्रत्याशित वृद्धि का पता लगाने और उसे रोकने के लिए कैसे करें?

  4. @@ ROWCOUNT - SQL सर्वर में अंतिम कथन से प्रभावित पंक्तियों की संख्या प्राप्त करें

  5. उदाहरण के साथ OPENJSON का परिचय (SQL सर्वर)