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

ऑरैकल में चेक बाधा का उपयोग कैसे करें

परिचय

Oracle जाँच बाधा तुलना जैसे तार्किक अभिव्यक्तियों के आधार पर अखंडता नियमों को लागू करने के लिए उपयोग किया जाता है। उपयोग किए गए तार्किक अभिव्यक्तियों को बूलियन मान वापस करना चाहिए।
उदाहरण
कर्मचारी वेतन पर एक जांच बाधा ताकि कोई वेतन मूल्य 100000 से अधिक न हो। "दिल्ली", "पटना" और "मुंबई" की अनुमति है।

ओरेकल चेक बाधा कैसे काम करती है

  1. आप टेबल पर कॉलम पर चेक बाधाओं को परिभाषित करते हैं। चेक की कमी एक तार्किक अभिव्यक्ति है जो बूलियन मान को सही या गलत का मूल्यांकन करती है
  2. जब पंक्तियों को तालिका में सम्मिलित या अद्यतन किया जाता है, तो oracle तार्किक अभिव्यक्तियों की जाँच करता है।
  3. यदि इसका मूल्यांकन ट्रू पर किया जाता है, तो oracle डेटा को स्वीकार करता है और इन्सर्ट या डिलीट के साथ आगे बढ़ता है
  4. यदि यह गलत का मूल्यांकन करता है, तो oracle डेटा को अस्वीकार कर देता है

चेक बाधा पर महत्वपूर्ण बिंदु

ए। चेक बाधा एक कॉलम या कॉलम के समूह पर बनाई जा सकती है।
ख. एक कॉलम में एक या अधिक चेक बाधाएं हो सकती हैं।
ग. जिस क्रम में बाधाओं का मूल्यांकन किया जाता है वह परिभाषित नहीं है
d. कभी भी CHECK बाधाओं का उपयोग न करें जब कोई अन्य प्रकार की अखंडता बाधाएँ आवश्यक जाँच प्रदान कर सकती हैं।
e. कई बाधाओं को परिभाषित करते समय, सुनिश्चित करें कि वे एक दूसरे के साथ विरोध नहीं करते हैं

बाधाओं की जांच करें सीमा

(1) शर्त एक बूलियन एक्सप्रेशन होनी चाहिए, जिसे सम्मिलित या अद्यतन की जा रही पंक्ति में मानों का उपयोग करके मूल्यांकन किया जा सकता है।
(2) शर्त में
a नहीं हो सकता। सबक्वेरी या सीक्वेंस।
b. SYSDATE, UID, USER, या USERNV SQL फ़ंक्शन।
c. छद्म स्तंभ LEVEL, PRIOR, या ROWNUM.
d. उपयोगकर्ता-परिभाषित SQL फ़ंक्शन।

ओरेकल में चेक बाधा कैसे बनाएं

Oracle चेक बाधाओं को तालिका बनाने के खंड के साथ या तालिका को बदलने के बाद तालिका बनाने के बाद बनाया जा सकता है।
अब एक तालिका बनाने के साथ, इन-लाइन कॉलम सिंटैक्स या आउट-ऑफ-लाइन में चेक बाधाएं बनाई जा सकती हैं वाक्य रचना।

इन-लाइन सिंटैक्स

SQL> CREATE TABLE "EMP"
 ("EMPNO" NUMBER(4,0),
 "ENAME" VARCHAR2(10),
 "JOB" VARCHAR2(9),
 "MGR" NUMBER(4,0),
 "HIREDATE" DATE, 
 "SAL" NUMBER(7,2) check(SAL > 1000),
 "COMM" NUMBER(7,2),
 "DEPTNO" NUMBER(2,0),
  CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
  );

 Table created.

हम चेक बाधा को एक कस्टम नाम भी दे सकते हैं

SQL> CREATE TABLE "EMP"
    ("EMPNO" NUMBER(4,0),
     "ENAME" VARCHAR2(10),
     "JOB" VARCHAR2(9),
     "MGR" NUMBER(4,0),
     "HIREDATE" DATE,
     "SAL" NUMBER(7,2) constraint CHECK_SAL check(SAL > 1000),
     "COMM" NUMBER(7,2),
     "DEPTNO" NUMBER(2,0),
      CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
      );
 
Table created.

आउट-ऑफ़-लाइन सिंटैक्स

SQL> CREATE TABLE "EMP"
 ("EMPNO" NUMBER(4,0),
 "ENAME" VARCHAR2(10),
 "JOB" VARCHAR2(9),
 "MGR" NUMBER(4,0),
 "HIREDATE" DATE,
 "SAL" NUMBER(7,2) ,
 "COMM" NUMBER(7,2),
 "DEPTNO" NUMBER(2,0),
 CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"),
 check(SAL > 1000)
 );

 Table created.

हम चेक बाधा को एक कस्टम नाम भी दे सकते हैं

SQL> CREATE TABLE "EMP"
   ("EMPNO" NUMBER(4,0),
   "ENAME" VARCHAR2(10), 
   "JOB" VARCHAR2(9),  
   "MGR" NUMBER(4,0),
   "HIREDATE" DATE,
   "SAL" NUMBER(7,2) ,
   "COMM" NUMBER(7,2),
   "DEPTNO" NUMBER(2,0),
   CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"),
   constraint CHECK_SAL check(SAL > 1000)
    );
 
Table created.

जब कई कॉलम शामिल होते हैं, तो हम केवल आउट-ऑफ़-लाइन सिंटैक्स के साथ जाते हैं
यदि आप इनलाइन सिंटैक्स का उपयोग करते हैं, तो यह एक त्रुटि देगा

SQL> CREATE TABLE "EMP"
    ("EMPNO" NUMBER(4,0),
    "ENAME" VARCHAR2(10),
    "JOB" VARCHAR2(9),
    "MGR" NUMBER(4,0),
    "HIREDATE" DATE,
    "SAL" NUMBER(7,2) constraint CHECK_SAL check(SAL > 1000 and 
     DEPTNO is not null),
    "COMM" NUMBER(7,2),
    "DEPTNO" NUMBER(2,0),
    CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
    );
   
"SAL" NUMBER(7,2) constraint CHECK_SAL check(SAL > 1000 and DEPTNO is not null),
                                                                                  *
 ERROR at line 7:
 ORA-02438: Column check constraint cannot reference other columns

 SQL> CREATE TABLE "EMP"
     ("EMPNO" NUMBER(4,0),
      "ENAME" VARCHAR2(10),
      "JOB" VARCHAR2(9),
      "MGR" NUMBER(4,0),
      "HIREDATE" DATE,
      "SAL" NUMBER(7,2) ,
      "COMM" NUMBER(7,2),
      "DEPTNO" NUMBER(2,0),
      CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"),
      constraint CHECK_SAL check(SAL > 1000 and DEPTNO is not null)
       );
 Table created.

अब परिवर्तन तालिका सिंटैक्स का उपयोग करके तालिका बनने के बाद चेक बाधा को जोड़ा जा सकता है

SQL> CREATE TABLE "EMP"
    ("EMPNO" NUMBER(4,0),
    "ENAME" VARCHAR2(10),
    "JOB" VARCHAR2(9),
    "MGR" NUMBER(4,0),  
    "HIREDATE" DATE,
    "SAL" NUMBER(7,2) ,
    "COMM" NUMBER(7,2),
    "DEPTNO" NUMBER(2,0),  
    CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
    );
 Table created.

 SQL> alter table "EMP" add constraint  CHECK_SAL 
     check(SAL > 1000 and   DEPTNO is not null);
 Table altered.

टेबल पर चेक बाधा कैसे खोजें

निम्नलिखित डिक्शनरी, दृश्यों में बाधा पर जानकारी शामिल है
ALL_CONSTRAINTS
ALL_CONS_COLUMNS
USER_CONSTRAINTS
USER_CONS_COLUMNS
DBA_CONSTRAINTS
DBA_CONS_COLUMNS

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';

यहाँ C का मतलब चेक बाधा है

चेक बाधा को कैसे सक्षम/अक्षम करें

SQL> alter table "EMP"  disable constraint CHECK_SAL;
 Table altered.
 SQL> alter table "EMP"  enable  constraint CHECK_SAL;
 Table altered.

चेक की कमी कैसे छोड़ें

 alter table "EMP"  drop constraint CHECK_SAL;
 Table altered. 

चेक बाधाओं का उदाहरण

col1 >= 0 AND col1 < 85857 user_override in ('Y','N') class = 0 OR class = 1 hwm > 0
cm = 0 OR cm = 1
SEQ >= 0
status = 0 OR status = 1

यह भी पढ़ता है
तालिका बदलें प्राथमिक कुंजी जोड़ें oracle :oracle में प्राथमिक कुंजी विशिष्ट रूप से तालिका में पंक्ति की पहचान करती है। यह शून्य नहीं हो सकता है और तालिका निर्माण के समय या तालिका बनने के बाद बनाया जा सकता है
Oracle में शून्य बाधा नहीं:oracle में शून्य बाधा नहीं तालिका में कॉलम में शून्य मानों को लागू करने के लिए उपयोग नहीं किया जाता है। देखें कि कैसे जोड़ें, शून्य बाधाओं को छोड़ें
Oracle में अद्वितीय कुंजी:अद्वितीय कुंजी तालिका में कॉलम में अद्वितीय को लागू करती है और हमें पंक्ति को जल्दी से पहचानने में मदद करती है। यदि कोई अनुक्रमणिका उपलब्ध नहीं है, तो Oracle कुंजी के लिए अद्वितीय अनुक्रमणिका बनाता है
विदेशी कुंजी बाधा छोड़ें हम प्राथमिक, विदेशी कुंजी को छोड़ सकते हैं, चेक कर सकते हैं, एक ही कमांड के साथ शून्य और अद्वितीय बाधा नहीं
ओरेकल में कमांड हटाएं
https://docs.oracle.com/cd/B19306_01/server.102/b14200 /clauses002.htm

अनुशंसित पाठ्यक्रम

यहाँ Oracle SQL के लिए अच्छा Udemy कोर्स है
Oracle-Sql-Step-by-step :इस कोर्स में बेसिक sql, जॉइन, टेबल बनाना और इसकी संरचना को संशोधित करना, व्यू, यूनियन, यूनियन -ऑल और बहुत कुछ शामिल है। . SQL स्टार्टर के लिए एक बढ़िया कोर्स और अनिवार्य कोर्स
पूर्ण Oracle SQL प्रमाणन पाठ्यक्रम :यह उन लोगों के लिए एक अच्छा कोर्स है जो SQL डेवलपर कौशल के लिए नौकरी के लिए तैयार होना चाहते हैं। एक अच्छा समझाया गया कोर्स
Oracle SQL Developer:Essentials, Tips and Tricks :कई डेवलपर्स द्वारा Oracle Sql डेवलपर टूल का उपयोग किया जा रहा है। यह कोर्स हमें प्रभावी ढंग से इसका उपयोग करने और एक उत्पादक sql डेवलपर बनने के तरीके के बारे में ट्रिक्स और सबक देता है
Oracle SQL प्रदर्शन ट्यूनिंग मास्टरक्लास 2020 :प्रदर्शन ट्यूनिंग एक महत्वपूर्ण और सर्वाधिक मांग वाला कौशल है। इसके बारे में जानने और sql प्रदर्शन ट्यूनिंग शुरू करने के लिए यह एक अच्छा कोर्स है


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जटिल ओरेकल जेडीबीसी बीएलओबी हैंडलिंग

  2. Oracle - sql डेवलपर से स्क्रिप्ट कैसे उत्पन्न करें

  3. वर्तमान टाइमस्टैम्प में 2 महीने जोड़ें

  4. स्वचालित रोलबैक स्क्रिप्ट oracle

  5. क्या डेटाबेस से django मॉडल उत्पन्न करना संभव है?