ORACLE中Drop table cascade constraints之后果

前端之家收集整理的这篇文章主要介绍了ORACLE中Drop table cascade constraints之后果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

From:@H_403_1@

http://www.cnblogs.com/xd502djj/archive/2010/11/16/1878392.html@H_403_1@

当你要drop一个table时,如果删除table的动作会造成trigger或constraint产生矛盾,系统会出现错误警告的讯息而不会允许执行.。一个极简单的例子,例如你有一个员工基本资料表,上面可能有员工编号和员工姓名等字段,另外有一个员工销售表,上面有员工编号和员工销售额两个字段,员工薪资表的员工编号字段为一个foreign key参照到员工基本资料表的员工编号:@H_403_1@

sql> drop table t;@H_403_1@

Table dropped.@H_403_1@

sql> drop table t1;@H_403_1@

sql> create table t (id number,name varchar2(20));@H_403_1@

Table created.@H_403_1@

sql> create table t1 (id number,sal number);@H_403_1@

sql> alter table t add constraint t_pk primary key (id);@H_403_1@

Table altered.@H_403_1@

sql> alter table t1 add constraint t_fk foreign key (id) references t (id);@H_403_1@

sql> insert into t values (1,'JACK');@H_403_1@

1 row created.@H_403_1@

sql> insert into t values (2,'MARY');@H_403_1@

sql> COMMIT;@H_403_1@

Commit complete.@H_403_1@

sql> insert into t1 values (1,1000);@H_403_1@

sql> insert into t1 values (2,1500);@H_403_1@

sql> commit;@H_403_1@

sql> insert into t1 values (3,200);
insert into t1 values (3,200)
*
ERROR at line 1:
ORA-02291: integrity constraint (SYS.T_FK) violated - parent key not found@H_403_1@

(違反了constraint,員工基本資料表根本沒有3號這個員工,何來的銷售紀錄。)@H_403_1@


sql> drop table t;
drop table t
*
ERROR at line 1:
ORA-02449: unique/primary keys in table referenced by foreign keys@H_403_1@

(违反了constraint,员工销售表t1有參照到table t,这个reference relation不允许你drop table t)@H_403_1@

sql> drop table t cascade constraints;@H_403_1@

sql> select * from t1;@H_403_1@

ID SAL
---------- ----------
1 1000
2 1500@H_403_1@

sql> select CONSTRAINT_NAME,TABLE_NAME from dba_constraints where owner = 'SYS' and TABLE_NAME = 'T1'@H_403_1@

no rows selected@H_403_1@

sql>@H_403_1@

我们可以发现利用Drop table cascade constraints可以以刪除关联table t的constraint來达成你drop table t的目的,原來属于t1的foreign key constraint已经跟随着被删除掉了,但是,储存在table t1的资料可不会被删除,也就是说Drop table cascade constraints 是不影响到存储于objec里的row data。@H_403_1@

猜你在找的Oracle相关文章