Use decode() function in check constraints : Constraint Check « Constraints « Oracle PL / SQL

Use decode() function in check constraints


SQL> create table emp
  2  ( empno      NUMBER(4)    constraint E_PK
  3                            primary key
  4  , ename      VARCHAR2(8)
  5  , init       VARCHAR2(5)
  6  , job        VARCHAR2(8)
  7  , mgr        NUMBER(4)
  8  , bdate      DATE
  9  , sal        NUMBER(6,2)   constraint E_sal_NN not null
 10  , comm       NUMBER(6,2)
 11  , deptno     NUMBER(2)    default 10
 12  , constraint E_SALES_CHK  check(decode(job,'Tester',0,1)+ nvl2(comm,1,0) = 1)
 13  ) ;

Table created.

SQL> create index year_sal_idx
  2  on emp (12*sal + coalesce(comm,0));

Index created.

SQL> drop index year_sal_idx;

Index dropped.

SQL> drop table emp;

Table dropped.


Related examples in the same category

1.Constriant: check value between 0 and 100
2.State a check constraint that check relation between two columns
3.Follow the contraint
4.add constraint for a column: check (gender in ('MALE', 'FEMALE'))
5.Constraint check with 'upper' function
6.Constraint check with in function
7.Violate constraints
8.Check date type column for nullable and value range
9.Check nullable and value range for one single column data
10.Add two conditions for one column
11.Add constraint for date type column
12.A check constraint can also be created or added as a table constraint.
13.Add constraint to ensure that value from one column is bigger than that from another
14.Setting CHECK constraint for number type field
15.Setting the Check constraint for int value field during declaration
16.Syntax for adding check constraint to a column
17.Violate a check constraint
18.alter table dept add emp_count number, constraint must_be_between_3_8, check(emp_count between 3 and 8 OR emp_count = 0), deferrable initially deferred
19.Could only contain three values
20.Must be upper case