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

ओरेकल चेक बाधा

जबकि मेरे पास Oracle नहीं है, मैंने PostgreSQL के साथ एक त्वरित परीक्षण किया और आपका पहला उदाहरण (IS_DISABLED) NULL होने के नाते और DISABILITY_INCOME_TYPE_ID 1 जा रहा है:

postgres=> select (null is null and 1 is null);
 ?column?
----------
 f
(1 registro)

postgres=> select (null is null and 1 is null) or (null = 0 and 1 is null);
 ?column?
----------
 f
(1 registro)

postgres=> select (null is null and 1 is null) or (null = 0 and 1 is null) or (null = 1);
 ?column?
----------

(1 registro)

यहां हम स्पष्ट रूप से देखते हैं कि, इस मामले में, आपकी अभिव्यक्ति (कम से कम PostgreSQL पर) NULL लौटाती है। मैनुअल से ,

इसलिए, यदि Oracle PostgreSQL के समान व्यवहार करता है, तो चेक बाधा पास . होगी ।

यह देखने के लिए कि क्या यह मामला है, इसके लिए स्पष्ट रूप से जाँच करके NULL शीनिगन्स से बचें और देखें कि क्या यह काम करता है:

CHECK ((IS_DISABLED IS NULL AND DISABILITY_INCOME_TYPE_ID IS NULL)
    OR (IS_DISABLED IS NOT NULL AND IS_DISABLED = 0 AND DISABILITY_INCOME_TYPE_ID IS NULL)
    OR (IS_DISABLED IS NOT NULL AND IS_DISABLED = 1));


  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. संचयी राशि रीसेट करें?

  3. क्या मैं विंडो फ़ंक्शन के साथ SQL क्वेरी में समूह बना सकता हूं?

  4. स्प्रिंग कनेक्शन पूलिंग मुद्दा

  5. समूह द्वारा एसक्यूएल गिनती