समस्या:
आप Oracle में किसी तालिका में बाधाओं के डिफ़ॉल्ट नाम जानना चाहते हैं।
उदाहरण:
हमारे डेटाबेस में, हम दो टेबल बनाते हैं, country
और student
, निम्नलिखित बाधाओं के साथ:PRIMARY KEY
(तालिकाओं में कॉलम आईडी 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) DEFAULT 'UNKNOWN', personal_number varchar(100) UNIQUE, age int CHECK(age>15), country_id int, FOREIGN KEY(country_id) references country(id) );
आइए प्रदर्शित करें कि Oracle डिफ़ॉल्ट रूप से इन तालिकाओं की बाधाओं को कैसे नाम देता है। उन्हें देखने के लिए इस क्वेरी का उपयोग करें:
select CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME from USER_CONSTRAINTS where TABLE_NAME='STUDENT' OR TABLE_NAME='COUNTRY';
ये रहा परिणाम:
CONSTRAINT_NAME | CONSTRAINT_TYPE | <थ>TABLE_NAME|
---|---|---|
SYS_C007376 | आर | विद्यार्थी |
SYS_C007366 | पी | देश |
SYS_C007374 | पी | विद्यार्थी |
SYS_C007367 | यू | देश |
SYS_C007375 | यू | विद्यार्थी |
SYS_C007372 | सी | विद्यार्थी |
चर्चा:
जब हम अपनी तालिकाएँ बनाते हैं, तो हम कुछ स्तंभों के लिए बाधाएँ निर्धारित करते हैं। हालाँकि, हम इन बाधाओं के लिए नाम निर्दिष्ट नहीं करते हैं, इसलिए उन्हें डिफ़ॉल्ट रूप से नाम दिया जाता है। बाधाओं के लिए डिफ़ॉल्ट नाम कैसे उत्पन्न होते हैं?
Oracle में, डिफ़ॉल्ट बाधा नाम उपयोगकर्ता नाम से शुरू होता है, उसके बाद '_C
' और एक अनुक्रम संख्या। बाधा के प्रकार हैं 'C
' (CHECK
), 'P
' (प्राथमिक कुंजी), 'U
' (अद्वितीय बाधा), और 'R
' (विदेशी कुंजी)। सभी डिफ़ॉल्ट बाधा नाम 'SYS
. के रूप में उत्पन्न होते हैं ', '_
', और संख्या। आप ऊपर दी गई तालिका में डिफ़ॉल्ट नाम देख सकते हैं। उदाहरण के लिए, CHECK
student
तालिका का नाम है SYS_C007372
।