1. 首先创建两个表dept_temp和emp_temp。
2. 设置deptno为dept_temp的主键
alter table dept_temp add constraint PK
primary key(deptno);
3. 为emp_temp设置外键约束
alter table emp_temp add constraint FK
foreign key(deptno)
references dept_temp;
4. 查询emp_temp表中deptno=30的员工数量
select count(*) from emp_temp where deptno=30;
5. 删除被应用表
drop table dept_temp cascade constraints;
6. 再次查询外键表emp_temp中deptno=30的员工数量
select count(*) from emp_temp where deptno=30;
结论:外键表中相应字段没有被删除。
可参考:
假设A为主表(既含有某一主键的表),B为从表(即引用了A的主键作为外键)。则当删除A表时,如不特殊说明,则 drop table A 系统会出现如下错误警告的信息而不会允许执行。
ERROR at line 1: ORA-02449: unique/primary keys in table referenced by foreign keys
此时必须用,drop table A cascade constraints;
之后,再查询约束:
SQL> select CONSTRAINT_NAME,TABLE_NAME from dba_constraints where owner = 'SYS' and TABLE_NAME = 'B' ;
no rows selected
利用Drop table cascade constraints可以刪除从表的constraint,从而可实现drop table A。原属于B的foreign key constraint已经跟随着被删除掉了,但是,储存在table B中的记录不会被删除,也就是说Drop table cascade constraints 时不会影响到存储于objec里的row data。