`

drop table cascade

阅读更多

建立数据库表之前,第一步,进行了drop table cascade constant 操作,不明白是什么意思,翻看书的前面也没有找到,于是查了一下,以下为查到的原因。
当你要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 wner = '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删除主键查看主键约束及创建联合主键

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

    【Transact-SQL】DROP SCHEMA TEST CASCADE :关键字 ‘CASCADE’ 附近有语法错误

    SCHEMA在SQL server中翻译为“架构”,在课本上为“模式”。 ...CREATE TABLE TAB1 ( COL1 SMALLINT, COL2 INT, COL3 CHAR(20), COL4 NUMERIC(10,3), COL5 DECIMAL(5,2) ); 【注】使用上面的

    DBA常用SQL

    drop table table name cascade constraints; 删除父表的时候把子表也删除(外健) with check option 该列有访问且值等(即条件一致) novalidate enable 约束">第一章:写简单的sql语句 SQL> alter user ...

    oracle数据库安装

    对数据库的表进行修改有如下几点 1. 列的添加,修改和删除 ...Alter table table_name drop [column column_name]|[(column1_name,column2_name,…)] [cascade constraints](多列的约束组成,用到这段语句)

    数据库脚本

    数据库脚本/图书分类基本信息表 DROP TABLE bookcat CASCADE CONSTRAINTS; CREATE TABLE bookcat( id NUMBER PRIMARY KEY, catname VARCHAR2 (40) NOT NULL );

    oracle数据备份

    Oracle 数据库 对数据库的表进行修改有如下几点 1. 列的添加,修改和...Alter table table_name drop [column column_name]|[(column1_name,column2_name,…)] [cascade constraints](多列的约束组成,用到这段语句)

    数据库表操作代码

    DROP TABLE IF EXISTS `admins`; CREATE TABLE `admins` ( `管理员帐号` char(30) NOT NULL DEFAULT '', `用户名` char(30) NOT NULL DEFAULT '', `密码` char(8) DEFAULT NULL, PRIMARY KEY (`管理员帐号`,`...

    oracle建表

    oracle建表 -@/home/soft01/employee....drop table dept_guai cascade constraints; create table dept_guai( deptno number(2) constraint dept_guai_no_pk primary key, dname char(20), location char(20) );

    oracle游标

    1. 创建表 CREATE TABLE 学生信息 ( 学号varchar(14) IDENTITY(1,1) PRIMARY KEY, 姓名varchar(8) UNIQUE NOT NULL, 班级编号varchar(14) REFERENCES '班级信息', ...DROP COLUMN 家庭住址CASCADE

    oracle笔记.doc

    1. 创建表 CREATE TABLE 学生信息 ( 学号varchar(14) IDENTITY(1,1) PRIMARY KEY, 姓名varchar(8) UNIQUE NOT NULL, 班级编号varchar(14) REFERENCES '班级信息', ...DROP COLUMN 家庭住址CASCADE

    创建表及SQL基本操作

    1. 创建表 CREATE TABLE 学生信息 ( 学号varchar(14) IDENTITY(1,1) PRIMARY KEY, 姓名varchar(8) UNIQUE NOT NULL, 班级编号varchar(14) REFERENCES '班级信息', ...DROP COLUMN 家庭住址CASCADE

    mysql数据库设计(1).pdf

    添加级联操作 语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE ; 2. 分类: 1. 级联更新:ON UPDATE CASCADE 2...

    SiliconTestTask

    DROP SCHEMA IF EXISTS spring CASCADE; CREATE SCHEMA spring; DROP TABLE IF EXISTS spring.categories; CREATE TABLE spring.categories ( name character varying(45) NOT NULL, description text, ...

    Oracle事例

    Drop table 表名 cascade constraints; 8:索引管理 <1>.creating function-based indexes sql> create index summit.item_quantity on summit.item(quantity-quantity_shipped); <2>.create a B-tree ...

    数据库建库指令

    drop user cw cascade; drop user nc66 cascade; 创建表空间(SQLPLUS方法,PLSQL不适用 ) --定义表空间 define newtablespace=yonyou2015; --定义表空间文件路径 此处请务必保证正确 文件名可以自行修改 define ...

    2009达内SQL学习笔记

    1、用法:SELECT columns,prod2,prod3<列> FROM Table1,table2<表名> 分号结束 如: select id from s_emp; select last_name,name from s_emp,s_dept where s_emp.dept_id=s_dept.id;--列表每人所在部门 SELECT...

    python-mysql day05.txt

    2、alter table 表名 drop foreign key 外键名; 5、已有表 alter table 表名 add constraint 外键名 foreign key(字段) references 主表(字段) on delete ... on update ... 6、注意 在已有表中添加外键时,...

    用sql修改基本表及其更新表中数据

    [ DROP [ COLUMN ] [CASCADE| RESTRICT] ] [ DROP CONSTRAINT[ RESTRICT | CASCADE ] ] [ALTER COLUMN ] ; 其中 是要修改的基本表 ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件 例:alter ...

    数据库相关的知识点!

    删除索引:alter table 表名 drop primary key(列名)和alter table 表名 modify 列名 int,drop primary key 4、组合索引:将多个列组合成一个索引 创建组合索引:create iindex 索引名 on 表名(列1,列2) 在使用...

    【数据库MySQL】数据库网上书店管理系统.pdf

    创建数据库和数据表 USE [MASTER] GO IF EXISTS(SELECT * FROM SYSDATABASES WHERE NAME='BOOKSTORE') DROP DATABASE BOOKDTORE; GO CREATE DATABASE BOOKSTORE ON PRIMARY ( NAME='BOOKSTORE_DATA', FILENAME='D:...

Global site tag (gtag.js) - Google Analytics