ORACLE中Drop table cascade constraints之后果
来源:互联网 发布:福州摩尔软件如何 编辑:程序博客网 时间:2024/06/04 17:57
From:
http://www.cnblogs.com/xd502djj/archive/2010/11/16/1878392.html
当你要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。
- ORACLE中Drop table cascade constraints之后果
- ORACLE中Drop table cascade constraints之后果
- ORACLE中Drop table cascade constraints之后果
- ORACLE中Drop table cascade constraints之后果.
- ORACLE中Drop table cascade constraints之后果
- ORACLE中Drop table cascade constraints
- Oracle 在Drop表时的Cascade Constraints
- Oracle 在Drop表时的Cascade Constraints
- ORACLE删除表空间:DROP TABLESPACE TESTFAN1 [INCLUDING CONTENTS][CASCADE CONSTRAINTS]
- Oracle中drop user和drop user cascade的区别
- Oracle中drop user和drop user cascade的区别
- Oracle中 drop user 和 drop user cascade 的区别
- Oracle中drop user和drop user cascade的区别
- Oracle中 drop user 和 drop user cascade 的区别
- Oracle中drop user 与 drop user cascade的区别
- Oracle中 drop user 和 drop user cascade 的区别
- Oracle中drop user和drop user cascade的区别
- drop table中cascade的含义及用法
- mysql 数据库相关操作
- Python-Day2(函数)
- 自定义cell里面添加button点击跳转别的界面
- 选择排序初步理解
- 【前端组件】百度upload组件实践
- ORACLE中Drop table cascade constraints之后果
- 为了更高效的开发代码,这里列出了一些webstorm的快捷键和zencoding
- 采购单-京东2017在线笔试编程题C++
- Android6.0 Sensor流程
- Python-Day3(高级特性)
- Java虚拟机详解----常用JVM配置参数
- sd 协议解析
- 原生地图获取坐标转化为真实坐标,火星坐标
- 高仿知乎日报(四)[主页面条目显示]