Constraint with Two conditions : Check « Table « Oracle PL/SQL Tutorial






SQL>
SQL>
SQL>
SQL>
SQL> -- create demo table
SQL> create table Employee(
  2    ID                 VARCHAR2(4 BYTE)         NOT NULL primary key,
  3    First_Name         VARCHAR2(10 BYTE),
  4    Last_Name          VARCHAR2(10 BYTE),
  5    Start_Date         DATE,
  6    End_Date           DATE,
  7    Salary             Number(8,2),
  8    City               VARCHAR2(10 BYTE),
  9    Description        VARCHAR2(15 BYTE)
 10  )
 11  /

Table created.

SQL>
SQL>
SQL>
SQL> -- display data in the table
SQL> select * from Employee
  2  /

no rows selected

SQL>
SQL>
SQL> ALTER TABLE employee ADD (
  2       CONSTRAINT date_constraint CHECK(
  3            start_date IS NOT NULL
  4            AND
  5            start_date >= to_date('19870730','YYYYMMDD')
  6            )
  7       );

Table altered.

SQL>
SQL>
SQL>
SQL> -- prepare data
SQL> insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)
  2               values ('01','Jason',    'Martin',  to_date('19960725','YYYYMMDD'), to_date('20060725','YYYYMMDD'), 1234.56, 'Toronto',  'Programmer')
  3  /

1 row created.

SQL> insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)
  2                values('02','Alison',   'Mathews', to_date('19760321','YYYYMMDD'), to_date('19860221','YYYYMMDD'), 6661.78, 'Vancouver','Tester')
  3  /
insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,               Salary,  City,       Description)
*
ERROR at line 1:
ORA-02290: check constraint (JAVA2S.DATE_CONSTRAINT) violated


SQL> insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)
  2                values('03','James',    'Smith',   to_date('19781212','YYYYMMDD'), to_date('19900315','YYYYMMDD'), 6544.78, 'Vancouver','Tester')
  3  /
insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,               Salary,  City,       Description)
*
ERROR at line 1:
ORA-02290: check constraint (JAVA2S.DATE_CONSTRAINT) violated


SQL> insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)
  2                values('04','Celia',    'Rice',    to_date('19821024','YYYYMMDD'), to_date('19990421','YYYYMMDD'), 2344.78, 'Vancouver','Manager')
  3  /
insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,               Salary,  City,       Description)
*
ERROR at line 1:
ORA-02290: check constraint (JAVA2S.DATE_CONSTRAINT) violated


SQL> insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)
  2                values('05','Robert',   'Black',   to_date('19840115','YYYYMMDD'), to_date('19980808','YYYYMMDD'), 2334.78, 'Vancouver','Tester')
  3  /
insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,               Salary,  City,       Description)
*
ERROR at line 1:
ORA-02290: check constraint (JAVA2S.DATE_CONSTRAINT) violated


SQL> insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)
  2                values('06','Linda',    'Green',   to_date('19870730','YYYYMMDD'), to_date('19960104','YYYYMMDD'), 4322.78,'New York',  'Tester')
  3  /

1 row created.

SQL> insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)
  2                values('07','David',    'Larry',   to_date('19901231','YYYYMMDD'), to_date('19980212','YYYYMMDD'), 7897.78,'New York',  'Manager')
  3  /

1 row created.

SQL> insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)
  2                values('08','James',    'Cat',     to_date('19960917','YYYYMMDD'), to_date('20020415','YYYYMMDD'), 1232.78,'Vancouver', 'Tester')
  3  /

1 row created.

SQL>
SQL>
SQL> ALTER TABLE employee
  2  DROP CONSTRAINT date_constraint;

Table altered.

SQL>
SQL>
SQL>
SQL>
SQL>
SQL> -- clean the table
SQL> drop table Employee
  2  /

Table dropped.








6.13.Check
6.13.1.Create a table with check constraint
6.13.2.Adding a CHECK Constraint
6.13.3.Use comparison operators with a CHECK constraint
6.13.4.Constraint with Two conditions
6.13.5.Add condition constraint with 'and' operator
6.13.6.Check constraint with decode and nvl2
6.13.7.Check constraint with MOD function
6.13.8.A column with upper case constraint
6.13.9.check constraint: must be positive value
6.13.10.Check constraint: one column must less than another column
6.13.11.Add constraint to ensure that value from one column is bigger than that from another
6.13.12.Salary column value cannot be greater than 1000
6.13.13.Setting CHECK constraint for number type field
6.13.14.Setting the Regular expression check for varchar field
6.13.15.Use char function to build default column value
6.13.16.Use decode() function in check constraints
6.13.17.Violate a ckeck constraint
6.13.18.Must be upper case