当前位置: 首页 > news >正文

ORACLE中Drop table cascade constraints之后果.

当你要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。


本文转自茄子_2008博客园博客,原文链接:http://www.cnblogs.com/xd502djj/archive/2010/11/16/1878392.html,如需转载请自行联系原作者。



相关文章:

  • 中国人工智能学会通讯——智能语音技术与产业应用展望 1.1 智能语音技术的发展现状和挑战...
  • 2.7亿Gmail、雅虎和Hotmail账号遭泄露
  • 用不到50行的Python代码构建最小的区块链
  • VMWARE Workstation出现多个严重漏洞 12.5.3以下版本均受影响 其它多个产品也爆出严重漏洞...
  • 欧比特:业绩增长强劲,开启卫星大数据服务商时代
  • 光纤资料大全之光纤分类
  • easyUI 表格显示frozen属性使用
  • 省市区 联动(编辑回显)小例
  • JVM-CLASS文件完全解析-属性表集合
  • 我是如何评估面试者的软技能的?
  • 接口性能测试实战小结(附点评)
  • 关于5G技术你不得不知的5个问题
  • 甲骨文公司计划通过云服务进一步扩展Sparc业务规模
  • 传DRAM调涨Q4 DRAM价格10%以上 爱普受惠
  • 在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解) 背景
  • 2019年如何成为全栈工程师?
  • CSS中外联样式表代表的含义
  • ECMAScript6(0):ES6简明参考手册
  • Intervention/image 图片处理扩展包的安装和使用
  • Java程序员幽默爆笑锦集
  • KMP算法及优化
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • uva 10370 Above Average
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 工程优化暨babel升级小记
  • 基于HAProxy的高性能缓存服务器nuster
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 如何学习JavaEE,项目又该如何做?
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 我与Jetbrains的这些年
  • 一些css基础学习笔记
  • 智能合约Solidity教程-事件和日志(一)
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • # Panda3d 碰撞检测系统介绍
  • #QT(一种朴素的计算器实现方法)
  • (编译到47%失败)to be deleted
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (全注解开发)学习Spring-MVC的第三天
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十六)一篇文章学会Java的常用API
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (原創) 物件導向與老子思想 (OO)
  • (转)【Hibernate总结系列】使用举例
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)四层和七层负载均衡的区别
  • .NET gRPC 和RESTful简单对比
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .Net 垃圾回收机制原理(二)
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @requestBody写与不写的情况
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [1204 寻找子串位置] 解题报告
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [Asp.net mvc]国际化