oracle级联删除表语句,Oracle 级联删除外键
Oracle 级联删除外键
所谓的级联删除是指当主表中的一条记录被删除,那么子表中所关联的记录也相应的自动删除。本教程将教大家如何在Oracle中使用级联删除外键。
使用CREATE TABLE语句定义级联删除
以下是使用CREATE TABLE语句定义级联删除的语法:
CREATE TABLE table_name
(
column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT fk_column
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ... column_n)
ON DELETE CASCADE
);
示例:
CREATE TABLE supplier
( supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
);
CREATE TABLE products
( product_id numeric(10) not null,
supplier_id numeric(10) not null,
CONSTRAINT fk_supplier
FOREIGN KEY (supplier_id)
REFERENCES supplier(supplier_id)
ON DELETE CASCADE
);
以上示例中,我们在supplier表创建了一个名为supplier_pk的主键,这个主键只包含supplier_id字段。
然后在products表上创建了一个名为fk_supplier的外键,该表根据supplier_id字段引用supplier表的supplier_pk字段。
由于级联删除,当supplier表中的记录被删除时,products表中相应的所有记录也将被删除,因为这些记录具有相同的supplier_id值。
此外,我们也可以创建一个具有多个字段的外键(带级联删除),如下例所示:
CREATE TABLE supplier
( supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name)
);
CREATE TABLE products
( product_id numeric(10) not null,
supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
CONSTRAINT fk_supplier_comp
FOREIGN KEY (supplier_id, supplier_name)
REFERENCES supplier(supplier_id, supplier_name)
ON DELETE CASCADE
);
在这个例子中,fk_foreign_comp外键基于两个字段:supplier_id和supplier_name字段引用supplier表。
根据supplier_id和supplier_name删除supplier表中的记录时,外键fk_foreign_comp上的级联删除会导致products表中的所有对应记录也会被级联删除。
使用ALTER TABLE语句定义级联删除
除了CREATE TABLE语句外,我们还可以用ALTER TABLE语句定义级联删除,具体语法如下:
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ... column_n)
ON DELETE CASCADE;
示例:
ALTER TABLE products
ADD CONSTRAINT fk_supplier
FOREIGN KEY (supplier_id)
REFERENCES supplier(supplier_id)
ON DELETE CASCADE;
在本例中,我们创建了一个名为fk_supplier的外键(带级联删除),该外键基于supplier_id字段引用supplier表。
此外,我们也可以创建一个具有多个字段的外键(带级联删除),如下例所示:
ALTER TABLE products
ADD CONSTRAINT fk_supplier
FOREIGN KEY (supplier_id, supplier_name)
REFERENCES supplier(supplier_id, supplier_name)
ON DELETE CASCADE;
oracle级联删除表语句,Oracle 级联删除外键相关推荐
- oracle级联删除表空间,Oracle表的创建.表空间创建删除,导入导出等
创建表空间; 先在E盘建立oradate再在里面建一个temp, 再打开命令行cmd在写入sqlplus再写入sys/oracle@orcl as sysdba再写入 create tablespac ...
- mysql中的级联删除的语句_级联删除sql语句-数据库级联删除语句-sql删除语句
SQl语句的级联删除问题 删除应该有顺序 1,删除link表 delete from ref,link where ref.link_code=link.link_code and link_id=? ...
- oracle 如何删除表列,Oracle中增加,修改,删除表中的列
内核对TCP REUSEPORT的优化 Q&A 当有人问起我关于reuseport的一些事的时候,我们的对话基本如下:Q1:什么是reuseport?A1:reuseport是一种套接字复用机 ...
- oracle 级联外键,Oracle 级联删除外键
所谓的级联删除是指当主表中的一条记录被删除,那么子表中所关联的记录也相应的自动删除.本教程将教大家如何在Oracle中使用级联删除外键. 使用CREATE TABLE语句定义级联删除 以下是使用CRE ...
- oracle中删除yuj_oracle删除表语句
删除表(记录和结构)的语名delete ---- truncate ---- drop DELETE (删除数据表里记录的语句) DELETE FROM表名 WHERE 条件; 注意 ...
- oracle删除表某一字段,oracle中删除表中某字段出现重复的信息 保留其中一条
记得以前有个同事问过我这个,说是以前面试的时候碰到的问题,下面我介绍三种方法. 首先我们在这里创建一个测试表添加相应的测试数据. create table test (id number,name ...
- oracle删除表的一个字段的数据库,学会Oracle数据库删除表字段和Oracle数据库表增加字段方法...
Oracle数据库添加字段的语法:alter table tablename add (column datatype [default value][null/not null],-.); Ora ...
- Oracle数据库删除表的几种方法
删除表(记录和结构)的语名:delete -- truncate -- drop delete (删除数据表里记录的语句) delete from 表名 where 条件; 注意:删除记录并不 ...
- PowerDesigner,如何将Mysql数据库建表语句转化成Oracle数据库建表语句。
在实际工作中,一张表,我们可能需要在Mysql数据库中建表,又要在Oracle数据库中建表.表中每个字段的数据类型.中文注释.是否可为NULL 问题,非常影响我们建表的效率.本篇文章,以Mysql数据 ...
最新文章
- springmvc常用注解标签详解
- 从寻找可敬的人类开始,扩展未来人类生存的8个维度
- php获取date前1分钟hour,php时间轴函数,刚、1分钟前、1小时前、一天前
- php时间类函数吗,关于PHP 内置时间类函数的一个小问题
- numba.jit警告:Compilation is falling back to object mode WITH looplifting enabled because Function
- IDEA生成toString方法的快捷键
- 新一代Notebook神器出现,Jupyter危险了!
- Tomcat的目录结构详解
- mysql 编辑数据库内容_详解mysql数据库增删改操作
- Google Health将被解散,谷歌为何折戟于医疗健康?
- Linux系统下强制踢掉登录用户
- CI学习 – header和footer
- Python3分别将list、numpy数组、变量内容写入txt文件中
- 天气预报城市代码对应表
- python爬取谷歌图片_Python爬取谷歌街景图片
- 计算机语言异或符号,异或门的电路符号表达_XOR的电路实现
- 【渗透安全】利用腾讯云CDN节点隐藏连接Webshell的真实IP
- 江苏省学业水平测试信息技术软件,江苏2019年普通高中信息技术学业水平测试工作顺利结束...
- python心率检测
- OCX打包CAB并签名的过程