sql >> Databasteknik >  >> RDS >> Oracle

Oracle Check Constraint

Även om jag inte har Oracle gjorde jag ett snabbtest med PostgreSQL och ditt första exempel (IS_DISABLED är NULL och DISABILITY_INCOME_TYPE_ID är 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)

Här ser vi tydligt att i det här fallet returnerar ditt uttryck (åtminstone på PostgreSQL) NULL. Från handboken ,

Så om Oracle beter sig på samma sätt som PostgreSQL, skulle kontrollbegränsningen passas .

För att se om detta är fallet, undvik NULL-skickligheterna genom att explicit kolla efter det och se om det fungerar:

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. Hur använder jag LOAD_FILE för att infoga värde från en fil i en tabell?

  2. SELECT-fråga i WHERE-satsen i UPDATE-frågan

  3. Hur man listar tabellnamnet från sqlite DB -- Android

  4. INFO-utdata trots SET client_min_messages TO WARNING strax innan