Oracle में क्या नहीं है नल बाधा
तालिका में कॉलम में शून्य मानों को लागू करने के लिए ऑरैकल में शून्य बाधाओं का उपयोग नहीं किया जाता है। इसलिए यदि आप उस कॉलम में नल डालने का प्रयास करते हैं, तो यह एक त्रुटि देगा।
अशक्त बाधा कैसे उत्पन्न करें
तालिका निर्माण में अशक्त बाधाओं को परिभाषित नहीं किया गया है या आप तालिका को संशोधित कर सकते हैं, बाद में, एक कॉलम को नॉट नल में बदलने के लिए। आइए उदाहरणों पर एक नज़र डालें।
तालिका निर्माण
कॉलम के साथ इनलाइन शून्य बाधा निर्दिष्ट नहीं है।
SQL> CREATE TABLE "EMP"
("EMPNO" NUMBER(4,0) Not Null,
"ENAME" VARCHAR2(10) Not null,
"JOB" VARCHAR2(9),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2) ,
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0)
);
Table created. यहां हमने टेबल एम्प पर दो नॉट अशक्त बाधाओं को परिभाषित किया है। हम नीचे दी गई क्वेरी का उपयोग करके टेबल पर नॉट नल बाधाओं की जांच कर सकते हैं
SQL> column CONSTRAINT_NAME format a20
SQL> column SEARCH_CONDITION format a50
SQL> SELECT Constraint_name, Search_condition
FROM User_constraints
WHERE Table_name = 'EMP' AND
Constraint_type = 'C';
नॉट नल बाधाओं को चेक बाधाओं के रूप में भी परिभाषित किया गया है और खोज की स्थिति है क्योंकि कॉलम नाम शून्य नहीं है
तालिका निर्माण के बाद बाधा नहीं जोड़ना
हम शून्य बाधा को जोड़ने के लिए तालिका को संशोधित कर सकते हैं
SQL> alter table emp modify ("HIREDATE" not null);
Table altered. यदि हमारे पास मौजूद कॉलम में शून्य डेटा है तो यह कथन विफल हो जाएगा
SQL> SELECT Constraint_name, Search_condition
FROM User_constraints
WHERE Table_name = 'EMP' AND
Constraint_type = 'C'
हम नॉट नल बाधा को भी कस्टम नाम दे सकते हैं। इसे प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है
SQL> CREATE TABLE "EMP"
("EMPNO" NUMBER(4,0) Constraint EMP_NOTNULL Not Null,
"ENAME" VARCHAR2(10) Not null,
"JOB" VARCHAR2(9),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2) ,
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0)
);
Table created.
SQL> column CONSTRAINT_NAME format a20
SQL> column SEARCH_CONDITION format a50
SQL> SELECT Constraint_name, Search_condition
FROM User_constraints
WHERE Table_name = 'EMP' AND
Constraint_type = 'C'; 
SQL> alter table emp modify ("HIREDATE" Constraint H_NOTNULL Not Null);
Table altered.
SQL> SELECT Constraint_name, Search_condition
FROM User_constraints
WHERE Table_name = 'EMP' AND
Constraint_type = 'C';
अशक्त की कमी को कैसे छोड़ें
हमें शून्य मान स्वीकार करने के लिए कॉलम को संशोधित करने की आवश्यकता है
SQL>alter table emp modify "HIREDATE" Null;
Table altered.
SQL> SELECT Constraint_name, Search_condition
FROM User_constraints
WHERE Table_name = 'EMP' AND
Constraint_type = 'C';
हम परिवर्तन तालिका ड्रॉप बाधा कमांड का उपयोग करके भी शून्य बाधा नहीं छोड़ सकते हैं
SQL> alter table emp drop constraint EMP_NOTNULL ;
Table altered;
SQL> SELECT Constraint_name, Search_condition
FROM User_constraints
WHERE Table_name = 'EMP' AND
Constraint_type = 'C';
शून्य मान वाले कॉलम पर नॉट नल बाधा कैसे जोड़ें
यदि आप शून्य मान वाले कॉलम पर एक शून्य-शून्य बाधा जोड़ने का प्रयास करते हैं, तो वह आदेश विफल हो जाएगा क्योंकि यह सभी पंक्तियों को सभी मौजूदा पंक्तियों को शून्य बाधा के लिए मान्य नहीं करेगा। कभी-कभी हम मौजूदा शून्य मानों को रखना चाहते हैं और भविष्य की पंक्तियों की जांच करना चाहते हैं कि उनमें इस कॉलम के लिए कोई शून्य मान नहीं है, तो उस स्थिति में, हम बाधा को नोवालिडेट क्लॉज के साथ सक्षम कर सकते हैं। इस खंड के साथ, यह मौजूदा पंक्तियों की जाँच नहीं करेगा, लेकिन भविष्य की पंक्तियों की जाँच की जाएगी
alter table emp modify "HIREDATE" not Null novalidate;
यह भी पढ़ें
प्राथमिक कुंजी ऑरैकल ड्रॉप करें
ऑरेकल में विदेशी कुंजी
ओरेकल में अद्वितीय कुंजी बाधा
ऑरेकल में एक टेबल पर सभी बाधाओं की जांच कैसे करें
ओरेकल तालिका में बदलाव कॉलम प्रकार को संशोधित करें
https://docs.oracle.com/cd/B28359_01/server.111/b28310/general005.htm#ADMIN11554