Question: I am trying to create a table that
will disallow a NULL value from being inserted into my table, based
upon a condition, using an if-then-else.
I know that I can easily disallow NULL values on insert with the
NOT NULL clause, but I want the value to change depending on the
value of another inserted column:
- If col1 is equal to 1 or 2, then ensure than col2 is
null
- If col2 is equal to 3 or 4 then ensure that col2 is NOT NULL
In sum, I want to create this complex business rule as a
conditional check constraint, using if-then-else logic to check for
complex Boolean expressions?
Answer: You can create complex
check constraints that implement conditional logic. Oracle guru
Laurent Schneider shows how to create a table constraint that
checks for NULL values based upon the values of other columns in the
INSERT statement:
The syntax for using the purge tablespace command is:
create table
test
(
col1
int not null,
col2 int default null,
constraint
chk_b
check((col2 is not null and col1 in(3,4)) or (col2 is null and col1
in (1,2)))
);
As we see, you can make check constraints quite complex and use
Boolean logic to enforce complex business rules at the database
level.
|
|
|
|
Guarantee your Success!
Oracle is the
world's most complex, robust and flexible database, considered
impossible to master without a mentor.
That's why all BC
Oracle trainers are working professionals, experts in Oracle who
share their tips and secrets. |
|
| |
|
Burleson is the American Team

Note:
This Oracle
documentation was created as a support and Oracle training reference for use by our
DBA performance tuning consulting professionals.
Feel free to ask questions on our
Oracle forum.
Verify
experience!
Anyone
considering using the services of an Oracle support expert should
independently investigate their credentials and experience, and not rely on
advertisements and self-proclaimed expertise. All legitimate Oracle experts
publish
their Oracle
qualifications.
Errata?
Oracle technology is changing and we
strive to update our BC Oracle support information. If you find an error
or have a suggestion for improving our content, we would appreciate your
feedback. Just
e-mail:
and include the URL for the page.
Copyright ? 1996 - 2012
All rights reserved.
Oracle ?
is the registered trademark of Oracle Corporation.
|
|