`

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。

分享到:
评论

相关推荐

    利用 Oracle 系统触发器防止误删除表操作

    例如,用户原本打算删除名为`A`的表(`DROP TABLE A CASCADE CONSTRAINTS;`),但由于输入错误,变成了删除`B`表(`DROP TABLE B CASCADE CONSTRAINTS;`),这种误操作可能会给业务带来严重损失。 #### 解决方案:使用...

    Oracle常用的和表(Table)相关的命令

    sql> alter table table_name drop column comments cascade constraints checkpoint 1000; sql> alter table table_name drop columns continue; ``` **解析**: - `drop column`: 删除指定列。 - `cascade ...

    oracle删除主键查看主键约束及创建联合主键

    ALTER TABLE TABLENAME DROP CONSTRAINTS COLUMN CASCADE; --删除约束 ALTER TABLE TABLENAME DISABLE PRIMARY_COLUMN ; --设置被设置为主键的列为无效 DROP INDEX INDEX_NAME; --删除主键索引 2,查看主键约束 ...

    Oracle Database 10g删除表的程序.rar_oracle 10g

    DROP TABLE 表名 CASCADE CONSTRAINTS; ``` 这条语句的基本结构是`DROP TABLE`后跟表的名称。如果直接执行,将删除表及其数据,但表的约束条件(如外键)仍然存在,可能导致其他关联表出现问题。因此,通常会加上`...

    oracle里常用命令之三

    sql> DROP TABLE table_name [CASCADE CONSTRAINTS]; ``` 11. 删除列 `ALTER TABLE`命令可用于删除列,`CASCADE CONSTRAINTS`处理依赖关系: ```sql> sql> ALTER TABLE table_name DROP COLUMN comments CASCADE ...

    oracle数据备份

    Oracle 数据库 对数据库的表进行修改有如下几点 1. 列的添加,修改和删除 添加列 Alter table•••add Alter table table_name add (new_colum_name datatype ...[cascade constraints](多列的约束组成,用到这段语句)

    oracle删除用户下的对象

    DROP TABLE table_name CASCADE CONSTRAINTS; ``` `CASCADE CONSTRAINTS`选项用于删除与表相关的约束,包括外键。 4. **删除序列**:如果用户有序列,需先停止序列,再删除: ```sql ALTER SEQUENCE sequence_...

    Oracle9i模式对象.ppt

    CASCADE CONSTRAINTS; ``` 在删除表时,需要先删除表的约束,然后才能删除表。 Oracle 9i 模式对象提供了多种类型的表、索引、视图、存储过程、函数、触发器等数据库对象,用于存储和管理数据。

    Oracle删除

    DROP TABLE employees CASCADE CONSTRAINTS; ``` `CASCADE CONSTRAINTS`选项会连同与该表相关的约束一起删除,如外键约束。 三、删除视图 视图是由SQL查询定义的虚拟表。删除视图使用`DROP VIEW`语句: ```sql DROP...

    Oracle_基本建表语句-操作语句

    DROP TABLE 表名 CASCADE CONSTRAINTS; ``` `CASCADE CONSTRAINTS`选项会同时删除与该表相关的所有约束和依赖对象。 - **查看表结构**:使用DESCRIBE或SELECT FROM USER_TAB_COLUMNS命令查看表的详细信息。 ```...

    Oracle9i模式对象.pptx

    DROP TABLE test CASCADE CONSTRAINTS; 11. 创建临时表 CREATE GLOBAL TEMPORARY TABLE 语句可以用于创建临时表。例如,CREATE GLOBAL TEMPORARY TABLE ... 12. Free space after delete 在删除数据后,Oracle ...

    oracle数据库安装

    对数据库的表进行修改有如下几点 1. 列的添加,修改和删除 添加列 Alter table•••add Alter table table_name add (new_colum_name datatype [default value...[cascade constraints](多列的约束组成,用到这段语句)

    oracle笔记 (创建、更改、删除[table,constraint,index,view,sequence])

    DROP TABLE Employees CASCADE CONSTRAINTS; ``` 这将删除Employees表及其所有依赖,如约束和索引。 总的来说,理解并熟练掌握这些Oracle基本操作对于数据库管理员和开发人员至关重要,它们构成了数据库管理和应用...

    ORACLE 各种增删改查

    DROP TABLE table_name CASCADE CONSTRAINTS; ``` 四、其他高级操作 1. 索引:用于提高查询性能。创建索引的命令是 `CREATE INDEX`,删除是 `DROP INDEX`。 2. 视图:虚拟表,基于一个或多个表的查询结果。创建视图...

    oracle里的常用命令

    - `DROP TABLE`:删除表,如 `DROP TABLE table_name CASCADE CONSTRAINTS`,其中 `CASCADE CONSTRAINTS` 会一并删除依赖于该表的对象。 4. 视图和索引: - `CREATE VIEW`:创建视图,一个虚拟表,如 `CREATE ...

    删除oracle下当前用户创建的所有对象

    - **删除表**:使用`DROP TABLE <table_name> CASCADE CONSTRAINTS`,`CASCADE CONSTRAINTS`选项会连同依赖于该表的约束一起删除。 - **删除视图**:使用`DROP VIEW <view_name>`命令,简单地删除视图。 - **删除...

    Oracle命令(自己整理)

    - `drop table`:删除表,例如`drop table table_name cascade constraints`(删除表及其依赖关系)。 - `alter table`:修改表结构,例如`alter table table_name add column new_column datatype`。 - `create ...

Global site tag (gtag.js) - Google Analytics