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)))
);
You can also create a Boolean datatype with a
Boolean check constraint in Oracle table columns:
create table
tab_bool (
bool char check (bool in ('N','Y')
);
As we see, you can make check constraints quite complex and use
Boolean logic to enforce complex business rules at the database
level.
Also see
PL/SQL Boolean data types.
|
|
Get the Complete
Oracle SQL Tuning Information
The landmark book
"Advanced Oracle
SQL Tuning The Definitive Reference" is
filled with valuable information on Oracle SQL Tuning.
This book includes scripts and tools to hypercharge Oracle 11g
performance and you can
buy it
for 30% off directly from the publisher.
|