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

SQL> drop table t;

Table dropped.

SQL> drop table t1;

Table dropped.

SQL> create table t (id number,name varchar2(20));

Table created.

SQL> create table t1 (id number,sal number);

 

Table created.

SQL> alter table t add constraint t_pk primary key (id);

Table altered.

SQL> alter table t1 add constraint t_fk foreign key (id) references t (id);

Table altered.

SQL> insert into t values (1,'JACK');

1 row created.

SQL> insert into t values (2,'MARY');

1 row created.

SQL> COMMIT;

Commit complete.

SQL> insert into t1 values (1,1000);

1 row created.

SQL> insert into t1 values (2,1500);

1 row created.

SQL> commit;

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

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

SQL> drop table t; 
drop table t 

ERROR at line 1: 
ORA-02449: unique/primary keys in table referenced by foreign keys

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

SQL> drop table t cascade constraints;

Table dropped.

SQL> select * from t1;

ID SAL 
---------- ---------- 
1 1000 
2 1500

SQL> select CONSTRAINT_NAME,TABLE_NAME from dba_constraints where owner = 'SYS' and TABLE_NAME = 'T1'

no rows selected

SQL>

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

最新文章

  1. Could not evaluate expression
  2. Mono 3.2.3 Socket功能迎来一稳定的版本
  3. RMAN 前期准备工作和实例
  4. EF的增删改查
  5. .NET对象的内存布局
  6. 国内网站常用的一些 CDN 公共库加速服务
  7. tab左右箭头切换(修改后)
  8. ADT开发中的一些优化设置:代码背景色、代码字体大小、代码自动补全
  9. centos6.4 yum kvm
  10. 【网络流24题】No. 17 运输问题 (费用流)
  11. centOS 7配置Apache + MySQL + PHP
  12. vue页面引入外部js文件遇到的问题
  13. Spring Boot 单元测试详解+实战教程
  14. Ubuntu pkg_resources.DistributionNotFound: The 'Scrapy==1.0.3' distribution was not found and is required by the application
  15. 软件工程项目程序:WC
  16. [Android] ACTION_GET_CONTENT与ACTION_PICK的区别
  17. std::lexicographical_compare函数的使用
  18. [转]python ctypes 探究 ---- python 与 c 的交互
  19. php的几种算法(转载)
  20. 【BZOJ】1257: [CQOI2007]余数之和(除法分块)

热门文章

  1. SpringMVC -- 梗概--源码--贰--静态资源的访问问题
  2. 8 -- 深入使用Spring -- 3...1 Resource实现类
  3. mysql的联表删除
  4. [Ubuntu] apt 添加第三方库
  5. 【Java并发编程一】线程安全和共享对象
  6. ajax二级联动代码实例
  7. 【Java知识点专项练习】之 接口和抽象类的区别
  8. 启用PAE后虚拟地址到物理地址的转换
  9. Malab 常用数学函数
  10. 零基础读懂视频播放器控制原理——ffplay播放器源代码分析