CONSTRAINTS
Constraints are categorized as follows.
Domain
integrity constraints
ü Not null
ü Check
Entity
integrity constraints
ü Unique
ü Primary key
Referential
integrity constraints
ü Foreign key
Constraints are always attached to a
column not a table.
We can add constraints in three ways.
ü Column level -- along with the column definition
ü Table level -- after the table definition
ü Alter level -- using alter command
While adding constraints you need not
specify the name but the type only, oracle will internally name the constraint.
If you want to give a name to the
constraint, you have to use the constraint clause.
NOT NULL
This is used to avoid null values.
We can add this constraint in column
level only.
Ex:
SQL> create table student(no number(2) not
null, name varchar(10), marks number(3));
SQL> create table
student(no number(2) constraint nn not null, name varchar(10), marks
number(3));
CHECK
This is used to insert the values based
on specified condition.
We can add this constraint in all three
levels.
Ex:
COLUMN LEVEL
SQL> create table
student(no number(2) , name varchar(10), marks number(3) check
(marks > 300));
SQL> create table student(no number(2) , name varchar(10), marks
number(3) constraint ch
check(marks > 300));
TABLE LEVEL
SQL> create table student(no number(2) , name varchar(10), marks
number(3), check
(marks > 300));
SQL> create table student(no number(2) , name varchar(10), marks
number(3), constraint
ch check(marks > 300));
ALTER LEVEL
SQL> alter table student add check(marks>300);
SQL> alter table student add constraint ch check(marks>300);
UNIQUE
This is used to avoid duplicates but it
allow nulls.
We can add this constraint in all three
levels.
Ex:
COLUMN
LEVEL
SQL> create table
student(no number(2) unique, name varchar(10), marks number(3));
SQL> create table student(no number(2) constraint un unique, name varchar(10), marks
number(3));
TABLE LEVEL
SQL> create table student(no number(2) , name varchar(10), marks
number(3),
unique(no));
SQL> create table student(no number(2) , name varchar(10), marks
number(3), constraint
un unique(no));
ALTER LEVEL
SQL> alter table student add unique(no);
SQL> alter table student add constraint un unique(no);
PRIMARY KEY
This is used to avoid duplicates and
nulls. This will work as combination of unique and not null.
Primary key always attached to the parent
table.
We can add this constraint in all three
levels.
Ex:
COLUMN
LEVEL
SQL> create table student(no number(2) primary key, name varchar(10),
marks number(3));
SQL> create table student(no number(2) constraint pk primary key, name varchar(10),
marks number(3));
TABLE LEVEL
SQL> create table student(no number(2) , name varchar(10), marks
number(3),
primary key(no));
SQL> create table student(no number(2) , name varchar(10), marks
number(3), constraint
pk primary key(no));
ALTER LEVEL
SQL> alter table student add primary key(no);
SQL> alter table student add constraint pk primary key(no);
FOREIGN KEY
This is used to reference the parent
table primary key column which allows duplicates.
Foreign key always attached to the child
table.
We can add this constraint in table and
alter levels only.
Ex:
TABLE LEVEL
SQL> create table emp(empno number(2), ename
varchar(10), deptno number(2),
primary key(empno), foreign
key(deptno) references dept(deptno));
SQL> create table emp(empno number(2), ename
varchar(10), deptno number(2),
constraint pk primary key(empno),
constraint fk foreign key(deptno) references
dept(deptno));
ALTER LEVEL
SQL> alter table emp add foreign key(deptno) references dept(deptno);
SQL> alter table emp add constraint fk foreign key(deptno) references
dept(deptno);
Once the primary key and foreign key
relationship has been created then you can not remove any parent record if the
dependent childs exists.
USING ON DELTE CASCADE
By using this clause you can remove the
parent record even it childs exists.
Because when
ever you remove parent record oracle automatically removes all its dependent
records from child table, if this clause is present while creating foreign key
constraint.
Ex:
TABLE LEVEL
SQL> create table emp(empno number(2), ename
varchar(10), deptno number(2),
primary key(empno), foreign
key(deptno) references dept(deptno) on delete cascade);
SQL> create table emp(empno number(2), ename
varchar(10), deptno number(2),
constraint pk primary key(empno),
constraint fk foreign key(deptno) references
dept(deptno) on delete cascade);
ALTER LEVEL
SQL> alter table emp add foreign key(deptno) references dept(deptno)
on delete cascade;
SQL> alter table emp add constraint fk foreign
key(deptno) references dept(deptno) on
delete cascade;
COMPOSITE KEYS
A composite key can be defined on a
combination of columns.
We can define composite keys on entity
integrity and referential integrity constraints.
Composite key can be defined in table and
alter levels only.
Ex:
UNIQUE (TABLE LEVEL)
SQL> create table student(no number(2) , name varchar(10), marks
number(3),
unique(no,name));
SQL> create table student(no number(2) , name varchar(10), marks
number(3), constraint
un unique(no,name));
UNIQUE (ALTER LEVEL)
SQL> alter table student add unique(no,name);
SQL> alter table student add constraint un unique(no,name);
PRIMARY KEY
(TABLE LEVEL)
SQL> create table student(no number(2) , name varchar(10), marks
number(3),
primary key(no,name));
SQL> create table student(no number(2) , name varchar(10), marks
number(3), constraint
pk primary key(no,name));
PRIMARY KEY (ALTER LEVEL)
SQL> alter table student add primary key(no,anme);
SQL> alter table student add constraint pk primary key(no,name);
FOREIGN KEY (TABLE LEVEL)
SQL> create table emp(empno number(2), ename
varchar(10), deptno number(2), dname
varchar(10), primary key(empno),
foreign key(deptno,dname) references
dept(deptno,dname));
SQL> create table emp(empno number(2), ename
varchar(10), deptno number(2), dname
varchar(10), constraint pk primary key(empno), constraint fk foreign
key(deptno,dname) references dept(deptno,dname));
FOREIGN KEY (ALTER LEVEL)
SQL> alter table emp add foreign key(deptno,dname) references
dept(deptno,dname);
SQL> alter table emp add constraint fk foreign
key(deptno,dname) references
dept(deptno,dname);
DEFERRABLE CONSTRAINTS
Each constraint has two additional
attributes to support deferred checking of constraints.
Ø Deferred
initially immediate
Ø Deferred
initially deferred
Deferred initially immediate checks for
constraint violation at the time of insert.
Deferred initially deferred checks for
constraint violation at the time of commit.
Ex:
SQL> create table student(no number(2), name varchar(10), marks
number(3), constraint
un unique(no) deferred initially immediate);
SQL> create table
student(no number(2), name varchar(10), marks number(3), constraint
un unique(no) deferred initially deferred);
SQL> alter table
student add constraint un unique(no) deferrable initially deferred;
SQL> set constraints all immediate;
This will enable all the constraints violations at the time of
inserting.
SQL> set constraints all deferred;
This will
enable all the constraints violations at the time of commit.
OPERATIONS WITH CONSTRAINTS
Possible operations with constraints as
follows.
Ø Enable
Ø Disable
Ø Enforce
Ø Drop
ENABLE
This will enable the constraint. Before
enable, the constraint will check the existing data.
Ex:
SQL> alter table
student enable constraint un;
DISABLE
This will disable the constraint.
Ex:
SQL> alter table
student enable constraint un;
ENFORCE
This will enforce the constraint rather
than enable for future inserts or updates.
This will not check for existing data
while enforcing data.
Ex:
SQL> alter table
student enforce constraint un;
DROP
This will remove the constraint.
Ex:
SQL> alter table
student drop constraint un;
Once the table is dropped, constraints
automatically will drop.
No comments:
Post a Comment