You are on page 1of 15

SQL> select *from dept;

DEPTNO
--------10
20
30
40
10

DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
SW

LOC
------------NEW YORK
DALLAS
CHICAGO
BOSTON
HYD

SQL> select *from emp;


EMPNO
DEPTNO
----------------7369
20
7499
30
7521
30
7566
20
7654
30
7698
30
7782
10
7788
20
7839
10
7844
30
7876
20
7900
30
7902
20
7934
10

ENAME

JOB

MGR HIREDATE

SAL

COMM

---------- --------- --------- --------- --------- --------SMITH

CLERK

7902 17-DEC-80

800

ALLEN

SALESMAN

7698 20-FEB-81

1600

300

WARD

SALESMAN

7698 22-FEB-81

1250

500

JONES

MANAGER

7839 02-APR-81

2975

MARTIN

SALESMAN

7698 28-SEP-81

1250

BLAKE

MANAGER

7839 01-MAY-81

2850

CLARK

MANAGER

7839 09-JUN-81

2450

SCOTT

ANALYST

7566 09-DEC-82

3000

KING

PRESIDENT

17-NOV-81

5000

TURNER

SALESMAN

7698 08-SEP-81

1500

ADAMS

CLERK

7788 12-JAN-83

1100

JAMES

CLERK

7698 03-DEC-81

950

FORD

ANALYST

7566 03-DEC-81

3000

MILLER

CLERK

7782 23-JAN-82

1300

14 rows selected.
SQL> insert into emp(empno,ename,job,sal,mgr,deptno) values(
2
SQL> ed
Wrote file afiedt.buf
1 insert into emp(empno,ename,job,sal,mgr,deptno)
2* values(7001,'EFCODD','MANAGER',4000,7999,60)
3 /
1 row created.
SQL> ed
Wrote file afiedt.buf

1400

1 ALTER TABLE Emp ADD Constraint Emp_Mgr_FK


2* FOREIGN KEY(Mgr) REFERENCES Emp(empno)
SQL> /
FOREIGN KEY(Mgr) REFERENCES Emp(empno)
*
ERROR at line 2:
ORA-02270: no matching unique or primary key for this column-list
SQL> ed
Wrote file afiedt.buf
1 ALTER TABLE Emp ADD Constraint Emp_Mgr_FK
2* FOREIGN KEY(Mgr) REFERENCES Emp(empno)
3
SQL>
SQL> alter table emp add constraint
2
SQL>
SQL> ed
Wrote file afiedt.buf
1* alter table emp add constraint
2 /

pk_eno primary key(empno)

Table altered.
SQL> ed
Wrote file afiedt.buf
1* alter table emp add constraint
2
SQL> ed
Wrote file afiedt.buf

pk_eno primary key(empno)

1* ALTER TABLE Emp ADD Constraint Emp_Mgr_FK FOREIGN KEY(Mgr) REFERENCES


Emp(empno)
SQL> /
ALTER TABLE Emp ADD Constraint Emp_Mgr_FK FOREIGN KEY(Mgr) REFERENCES
Emp(empno)
*
ERROR at line 1:
ORA-02298: cannot validate (BAAHU.EMP_MGR_FK) - parent keys not found
SQL> select *from emp;
EMPNO
DEPTNO
----------------7369
20
7499
30
7521
30
7566
20
7654
30

ENAME

JOB

MGR HIREDATE

SAL

COMM

---------- --------- --------- --------- --------- --------SMITH

CLERK

7902 17-DEC-80

800

ALLEN

SALESMAN

7698 20-FEB-81

1600

300

WARD

SALESMAN

7698 22-FEB-81

1250

500

JONES

MANAGER

7839 02-APR-81

2975

MARTIN

SALESMAN

7698 28-SEP-81

1250

1400

30
10
20
10
30
20
30
20
10
60

7698 BLAKE

MANAGER

7839 01-MAY-81

2850

7782 CLARK

MANAGER

7839 09-JUN-81

2450

7788 SCOTT

ANALYST

7566 09-DEC-82

3000

7839 KING

PRESIDENT

17-NOV-81

5000

7844 TURNER

SALESMAN

7698 08-SEP-81

1500

7876 ADAMS

CLERK

7788 12-JAN-83

1100

7900 JAMES

CLERK

7698 03-DEC-81

950

7902 FORD

ANALYST

7566 03-DEC-81

3000

7934 MILLER

CLERK

7782 23-JAN-82

1300

7001 EFCODD

MANAGER

7999

4000

15 rows selected.
SQL>
SQL> select mgr from emp
2
SQL>
SQL> ed
Wrote file afiedt.buf
1 select mgr from emp
2* where mgr not in(select empno from emp)
SQL> /
MGR
--------7999
SQL> ed
Wrote file afiedt.buf
1 select mgr from emp
2* where mgr not in(select empno from emp)
3 /
MGR
--------7999
SQL> ed
Wrote file afiedt.buf
1
2*
3
SQL>
SQL>
2

select mgr from emp


where mgr not in(select empno from emp)
update emp set mgr=7902
where empno=7001;

1 row updated.

SQL> select *from emp;


EMPNO
DEPTNO
----------------7369
20
7499
30
7521
30
7566
20
7654
30
7698
30
7782
10
7788
20
7839
10
7844
30
7876
20
7900
30
7902
20
7934
10
7001
60

ENAME

JOB

MGR HIREDATE

SAL

COMM

---------- --------- --------- --------- --------- --------SMITH

CLERK

7902 17-DEC-80

800

ALLEN

SALESMAN

7698 20-FEB-81

1600

300

WARD

SALESMAN

7698 22-FEB-81

1250

500

JONES

MANAGER

7839 02-APR-81

2975

MARTIN

SALESMAN

7698 28-SEP-81

1250

BLAKE

MANAGER

7839 01-MAY-81

2850

CLARK

MANAGER

7839 09-JUN-81

2450

SCOTT

ANALYST

7566 09-DEC-82

3000

KING

PRESIDENT

17-NOV-81

5000

TURNER

SALESMAN

7698 08-SEP-81

1500

ADAMS

CLERK

7788 12-JAN-83

1100

JAMES

CLERK

7698 03-DEC-81

950

FORD

ANALYST

7566 03-DEC-81

3000

MILLER

CLERK

7782 23-JAN-82

1300

EFCODD

MANAGER

7902

4000

1400

15 rows selected.
SQL> ALTER TABLE Emp ADD Constraint Emp_Mgr_FK
Emp(empno)
2 /

FOREIGN KEY(Mgr) REFERENCES

Table altered.
SQL> ed
Wrote file afiedt.buf
1 ALTER TABLE Emp ADD Constraint Emp_Mgr_FK
2* FOREIGN KEY(Mgr) REFERENCES Emp(empno)
3
SQL> /
FOREIGN KEY(Mgr) REFERENCES Emp(empno)
*
ERROR at line 2:
ORA-02275: such a referential constraint already exists in the table
SQL> select *from emp;

EMPNO
DEPTNO
----------------7369
20
7499
30
7521
30
7566
20
7654
30
7698
30
7782
10
7788
20
7839
10
7844
30
7876
20
7900
30
7902
20
7934
10
7001
60

ENAME

JOB

MGR HIREDATE

SAL

COMM

---------- --------- --------- --------- --------- --------SMITH

CLERK

7902 17-DEC-80

800

ALLEN

SALESMAN

7698 20-FEB-81

1600

300

WARD

SALESMAN

7698 22-FEB-81

1250

500

JONES

MANAGER

7839 02-APR-81

2975

MARTIN

SALESMAN

7698 28-SEP-81

1250

BLAKE

MANAGER

7839 01-MAY-81

2850

CLARK

MANAGER

7839 09-JUN-81

2450

SCOTT

ANALYST

7566 09-DEC-82

3000

KING

PRESIDENT

17-NOV-81

5000

TURNER

SALESMAN

7698 08-SEP-81

1500

ADAMS

CLERK

7788 12-JAN-83

1100

JAMES

CLERK

7698 03-DEC-81

950

FORD

ANALYST

7566 03-DEC-81

3000

MILLER

CLERK

7782 23-JAN-82

1300

EFCODD

MANAGER

7902

4000

1400

15 rows selected.
SQL> update emp set mgr=7001
2 where
3
SQL> ed
Wrote file afiedt.buf
1 update emp set mgr=7999
2* where empno=7001
SQL> /
update emp set mgr=7999
*
ERROR at line 1:
ORA-02291: integrity constraint (BAAHU.EMP_MGR_FK) violated - parent key
not found
SQL> clear screen
SQL> select *from emp;
EMPNO ENAME
JOB
MGR HIREDATE
SAL
COMM
DEPTNO
--------- ---------- --------- --------- --------- --------- -----------------

20
30
30
20
30
30
10
20
10
30
20
30
20
10
60

7369 SMITH

CLERK

7902 17-DEC-80

800

7499 ALLEN

SALESMAN

7698 20-FEB-81

1600

300

7521 WARD

SALESMAN

7698 22-FEB-81

1250

500

7566 JONES

MANAGER

7839 02-APR-81

2975

7654 MARTIN

SALESMAN

7698 28-SEP-81

1250

7698 BLAKE

MANAGER

7839 01-MAY-81

2850

7782 CLARK

MANAGER

7839 09-JUN-81

2450

7788 SCOTT

ANALYST

7566 09-DEC-82

3000

7839 KING

PRESIDENT

17-NOV-81

5000

7844 TURNER

SALESMAN

7698 08-SEP-81

1500

7876 ADAMS

CLERK

7788 12-JAN-83

1100

7900 JAMES

CLERK

7698 03-DEC-81

950

7902 FORD

ANALYST

7566 03-DEC-81

3000

7934 MILLER

CLERK

7782 23-JAN-82

1300

7001 EFCODD

MANAGER

7902

4000

15 rows selected.
SQL> alter table
2
SQL>
SQL> ed
Wrote file afiedt.buf
1* alter table emp
2 /

modify

job constraint job_nn not null

Table altered.
SQL> ed
Wrote file afiedt.buf
1 ALTER TABLE Emp ADD CONSTRAINT Dept_Dno_FK
2 FOREIGN KEY(Deptno)
3* REFERENCES Dept MODIFY(Deptno NOT NULL)
SQL> /
REFERENCES Dept MODIFY(Deptno NOT NULL)
*
ERROR at line 3:
ORA-02268: referenced table does not have a primary key
SQL> select *from dept;
DEPTNO DNAME
LOC
--------- -------------- -------------

1400

10
20
30
40
10

ACCOUNTING
RESEARCH
SALES
OPERATIONS
SW

NEW YORK
DALLAS
CHICAGO
BOSTON
HYD

SQL> delete from dept


2 where
3
SQL> ed
Wrote file afiedt.buf
1 delete from dept
2* where dname='SW'
3 /
1 row deleted.
SQL> select *from dept;
DEPTNO
--------10
20
30
40

DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS

LOC
------------NEW YORK
DALLAS
CHICAGO
BOSTON

SQL> commit;
Commit complete.
SQL> alter table dept
2
SQL> ed
Wrote file afiedt.buf
1* alter table dept
2 /

add constraint pk_dno primary key(deptno)

Table altered.
SQL> ALTER TABLE Emp ADD CONSTRAINT Dept_Dno_FK
2 FOREIGN KEY(Deptno)
3 REFERENCES Dept MODIFY(Deptno NOT NULL)
4 /
ALTER TABLE Emp ADD CONSTRAINT Dept_Dno_FK
*
ERROR at line 1:
ORA-02298: cannot validate (BAAHU.DEPT_DNO_FK) - parent keys not found
SQL> select
2
SQL>
SQL> ed
Wrote file afiedt.buf
1 select deptno from emp
2* where deptno not in(select deptno from dept)
3 /

DEPTNO
--------60
SQL> ed
Wrote file afiedt.buf
1 select deptno from emp
2* where deptno not in(select deptno from dept)
3
SQL>
SQL> update dept set deptno
2
SQL> ed
Wrote file afiedt.buf
1 update emp set deptno=40
2* where deptno=60
3 /
1 row updated.
SQL> ed
Wrote file afiedt.buf
1
2*
3
SQL>
2

update emp set deptno=40


where deptno=60
ALTER TABLE Emp ADD CONSTRAINT Dept_Dno_FK FOREIGN KEY(Deptno)
REFERENCES Dept MODIFY(Deptno NOT NULL);

Table altered.
SQL>
SQL> ed
Wrote file afiedt.buf
1 ALTER TABLE Emp ADD CONSTRAINT Dept_Dno_FK FOREIGN KEY(Deptno)
2* REFERENCES Dept MODIFY(Deptno NOT NULL)
SQL> select *from emp;
EMPNO
DEPTNO
----------------7369
20
7499
30
7521
30
7566
20
7654
30
7698
30
7782
10
7788
20

ENAME

JOB

MGR HIREDATE

SAL

COMM

---------- --------- --------- --------- --------- --------SMITH

CLERK

7902 17-DEC-80

800

ALLEN

SALESMAN

7698 20-FEB-81

1600

300

WARD

SALESMAN

7698 22-FEB-81

1250

500

JONES

MANAGER

7839 02-APR-81

2975

MARTIN

SALESMAN

7698 28-SEP-81

1250

BLAKE

MANAGER

7839 01-MAY-81

2850

CLARK

MANAGER

7839 09-JUN-81

2450

SCOTT

ANALYST

7566 09-DEC-82

3000

1400

10
30
20
30
20
10
40

7839 KING

PRESIDENT

17-NOV-81

5000

7844 TURNER

SALESMAN

7698 08-SEP-81

1500

7876 ADAMS

CLERK

7788 12-JAN-83

1100

7900 JAMES

CLERK

7698 03-DEC-81

950

7902 FORD

ANALYST

7566 03-DEC-81

3000

7934 MILLER

CLERK

7782 23-JAN-82

1300

7001 EFCODD

MANAGER

7902

4000

15 rows selected.
SQL> update emp set deptno=null
2 where empno=7001;
update emp set deptno=null
*
ERROR at line 1:
ORA-01407: cannot update ("BAAHU"."EMP"."DEPTNO") to NULL
SQL> clear screen
SQL> select constraint_name,constraint_type,index_name
2 from user_constraints
3
SQL>
SQL> ed
Wrote file afiedt.buf
1
2
3*
SQL>

select constraint_name,constraint_type,index_name
from user_constraints
where table_name='EMP'
/

CONSTRAINT_NAME
-----------------------------PK_ENO
EMP_MGR_FK
JOB_NN
SYS_C0011534
DEPT_DNO_FK

C INDEX_NAME
- -----------------------------P PK_ENO
R
C
C
R

SQL> ed
Wrote file afiedt.buf
1
2
3*
4

select constraint_name,constraint_type,index_name
from user_constraints
where table_name='DEPT'
/

CONSTRAINT_NAME
C INDEX_NAME
------------------------------ - -----------------------------PK_DNO
P PK_DNO
SQL>
SQL> alter table dept drop primary key;
alter table dept drop primary key

*
ERROR at line 1:
ORA-02273: this unique/primary key is referenced by some foreign keys
SQL> ed
Wrote file afiedt.buf
1* alter
2 /

table

dept drop primary key cascade

Table altered.
SQL>
2
3
4

select constraint_name,constraint_type,index_name
from user_constraints
where table_name='DEPT'
/

no rows selected
SQL>
2
3
4

select constraint_name,constraint_type,index_name
from user_constraints
where table_name='EMP'
/

CONSTRAINT_NAME
-----------------------------PK_ENO
EMP_MGR_FK
JOB_NN
SYS_C0011534

C INDEX_NAME
- -----------------------------P PK_ENO
R
C
C

SQL> alter table dept add


2 ed
3
SQL>
SQL> ed
Wrote file afiedt.buf
1* alter table
2 /

dept add constraint pk_dno primary key(deptno)

Table altered.
SQL> ed
Wrote file afiedt.buf
1* ALTER TABLE Emp ADD CONSTRAINT Dept_Dno_FK FOREIGN KEY(Deptno)
REFERENCES Dept(Deptno)
SQL> /
Table altered.
SQL> desc user_constraints
Name
------------------------------OWNER
CONSTRAINT_NAME
CONSTRAINT_TYPE
TABLE_NAME
SEARCH_CONDITION

Null?
Type
-------- ---VARCHAR2(30)
NOT NULL VARCHAR2(30)
VARCHAR2(1)
NOT NULL VARCHAR2(30)
LONG

R_OWNER
R_CONSTRAINT_NAME
DELETE_RULE
STATUS
DEFERRABLE
DEFERRED
VALIDATED
GENERATED
BAD
RELY
LAST_CHANGE
INDEX_OWNER
INDEX_NAME
INVALID
VIEW_RELATED

VARCHAR2(30)
VARCHAR2(30)
VARCHAR2(9)
VARCHAR2(8)
VARCHAR2(14)
VARCHAR2(9)
VARCHAR2(13)
VARCHAR2(14)
VARCHAR2(3)
VARCHAR2(4)
DATE
VARCHAR2(30)
VARCHAR2(30)
VARCHAR2(7)
VARCHAR2(14)

SQL> ed
Wrote file afiedt.buf
1 select constraint_name,constraint_type,index_name
2 from user_constraints
3* where table_name='EMP'
SQL> ed
Wrote file afiedt.buf
1
2
3*
SQL>

select constraint_name,constraint_type,index_name,status
from user_constraints
where table_name='EMP'
/

CONSTRAINT_NAME
-----------------------------PK_ENO
EMP_MGR_FK
JOB_NN
SYS_C0011534
DEPT_DNO_FK

C INDEX_NAME
- -----------------------------P PK_ENO
R
C
C
R

STATUS
-------ENABLED
ENABLED
ENABLED
ENABLED
ENABLED

SQL> ed
Wrote file afiedt.buf
1
2
3*
SQL>

select constraint_name,constraint_type,index_name,status
from user_constraints
where table_name='DEPT'
/

CONSTRAINT_NAME
C INDEX_NAME
STATUS
------------------------------ - ------------------------------ -------PK_DNO
P PK_DNO
ENABLED
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>

SQL>
SQL>
SQL>
SQL>
SQL>
SQL> alter table dept DISABLE primary key;
alter table dept DISABLE primary key
*
ERROR at line 1:
ORA-02297: cannot disable constraint (BAAHU.PK_DNO) - dependencies exist
SQL> ed
Wrote file afiedt.buf
1* alter table dept DISABLE
SQL> /

primary key cascade

Table altered.
SQL> select constraint_name,constraint_type,index_name,status
2
from user_constraints
3
where table_name='DEPT'
4
/
5
SQL> ed
Wrote file afiedt.buf
1
select constraint_name,constraint_type,index_name,status
2
from user_constraints
3* where table_name='DEPT'
4 /\
5
SQL> /
/\
*
ERROR at line 4:
ORA-00911: invalid character
SQL> ed
Wrote file afiedt.buf
1
select constraint_name,constraint_type,index_name,status
2
from user_constraints
3* where table_name='DEPT'
SQL> /
CONSTRAINT_NAME
C INDEX_NAME
STATUS
------------------------------ - ------------------------------ -------PK_DNO
P
DISABLED
SQL>
2
3
4

select constraint_name,constraint_type,index_name,status
from user_constraints
where table_name='EMP'
/

CONSTRAINT_NAME
-----------------------------PK_ENO
EMP_MGR_FK

C INDEX_NAME
- -----------------------------P PK_ENO
R

STATUS
-------ENABLED
ENABLED

JOB_NN
SYS_C0011534
DEPT_DNO_FK

C
C
R

ENABLED
ENABLED
DISABLED

SQL> insert into dept values(10,'SW','HYD');


1 row created.
SQL> update emp set deptno=60
2 where empno=7369;
1 row updated.
SQL> alter
2
SQL>
SQL> ed
Wrote file afiedt.buf
1* alter table dept enable primary key
2 /
alter table dept enable primary key
*
ERROR at line 1:
ORA-02437: cannot validate (BAAHU.PK_DNO) - primary key violated
SQL> delete from dept
2 where dname='SW';
1 row deleted.
SQL> select *from dept;
DEPTNO
--------10
20
30
40

DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS

LOC
------------NEW YORK
DALLAS
CHICAGO
BOSTON

SQL> alter table dept enable primary key


2
SQL> ed
Wrote file afiedt.buf
1* alter table dept enable primary key
SQL>
SQL> /
Table altered.
SQL> select *from emp;
EMPNO ENAME
JOB
MGR HIREDATE
SAL
COMM
DEPTNO
--------- ---------- --------- --------- --------- --------- ----------------7369 SMITH
CLERK
7902 17-DEC-80
800
60

30
30
20
30
30
10
20
10
30
20
30
20
10
40

7499 ALLEN

SALESMAN

7698 20-FEB-81

1600

300

7521 WARD

SALESMAN

7698 22-FEB-81

1250

500

7566 JONES

MANAGER

7839 02-APR-81

2975

7654 MARTIN

SALESMAN

7698 28-SEP-81

1250

7698 BLAKE

MANAGER

7839 01-MAY-81

2850

7782 CLARK

MANAGER

7839 09-JUN-81

2450

7788 SCOTT

ANALYST

7566 09-DEC-82

3000

7839 KING

PRESIDENT

17-NOV-81

5000

7844 TURNER

SALESMAN

7698 08-SEP-81

1500

7876 ADAMS

CLERK

7788 12-JAN-83

1100

7900 JAMES

CLERK

7698 03-DEC-81

950

7902 FORD

ANALYST

7566 03-DEC-81

3000

7934 MILLER

CLERK

7782 23-JAN-82

1300

7001 EFCODD

MANAGER

7902

4000

1400

15 rows selected.
SQL>
2
3
4

select constraint_name,constraint_type,index_name,status
from user_constraints
where table_name='EMP'
/

CONSTRAINT_NAME
-----------------------------PK_ENO
EMP_MGR_FK
JOB_NN
SYS_C0011534
DEPT_DNO_FK

C INDEX_NAME
- -----------------------------P PK_ENO
R
C
C
R

SQL> alter table dept enable primary key


2
SQL>
SQL> ed
Wrote file afiedt.buf
1* alter table emp enable constraint
2
SQL>
SQL> ed
Wrote file afiedt.buf
1* alter table emp enable constraint DEPT_DNO_FK
SQL> /
alter table emp enable constraint DEPT_DNO_FK
*
ERROR at line 1:

STATUS
-------ENABLED
ENABLED
ENABLED
ENABLED
DISABLED

ORA-02298: cannot validate (BAAHU.DEPT_DNO_FK) - parent keys not found


SQL> update emp set deptno=20
2 where empno=7369;
1 row updated.
SQL> alter table emp

enable constraint

DEPT_DNO_FK;

enable constraint

DEPT_DNO_FK

Table altered.
SQL> ed
Wrote file afiedt.buf
1* alter table emp
2 clear screen
3
SQL> clear screen
SQL>

You might also like