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 级联删除外键相关推荐

  1. oracle级联删除表空间,Oracle表的创建.表空间创建删除,导入导出等

    创建表空间; 先在E盘建立oradate再在里面建一个temp, 再打开命令行cmd在写入sqlplus再写入sys/oracle@orcl as sysdba再写入 create tablespac ...

  2. mysql中的级联删除的语句_级联删除sql语句-数据库级联删除语句-sql删除语句

    SQl语句的级联删除问题 删除应该有顺序 1,删除link表 delete from ref,link where ref.link_code=link.link_code and link_id=? ...

  3. oracle 如何删除表列,Oracle中增加,修改,删除表中的列

    内核对TCP REUSEPORT的优化 Q&A 当有人问起我关于reuseport的一些事的时候,我们的对话基本如下:Q1:什么是reuseport?A1:reuseport是一种套接字复用机 ...

  4. oracle 级联外键,Oracle 级联删除外键

    所谓的级联删除是指当主表中的一条记录被删除,那么子表中所关联的记录也相应的自动删除.本教程将教大家如何在Oracle中使用级联删除外键. 使用CREATE TABLE语句定义级联删除 以下是使用CRE ...

  5. oracle中删除yuj_oracle删除表语句

    删除表(记录和结构)的语名delete   ----   truncate      ---- drop DELETE (删除数据表里记录的语句) DELETE FROM表名 WHERE 条件; 注意 ...

  6. oracle删除表某一字段,oracle中删除表中某字段出现重复的信息 保留其中一条

    记得以前有个同事问过我这个,说是以前面试的时候碰到的问题,下面我介绍三种方法. 首先我们在这里创建一个测试表添加相应的测试数据. create table test  (id number,name ...

  7. oracle删除表的一个字段的数据库,学会Oracle数据库删除表字段和Oracle数据库表增加字段方法...

    Oracle数据库添加字段的语法:alter table tablename add (column datatype [default  value][null/not null],-.); Ora ...

  8. Oracle数据库删除表的几种方法

    删除表(记录和结构)的语名:delete -- truncate -- drop delete (删除数据表里记录的语句) delete from 表名 where 条件;     注意:删除记录并不 ...

  9. PowerDesigner,如何将Mysql数据库建表语句转化成Oracle数据库建表语句。

    在实际工作中,一张表,我们可能需要在Mysql数据库中建表,又要在Oracle数据库中建表.表中每个字段的数据类型.中文注释.是否可为NULL 问题,非常影响我们建表的效率.本篇文章,以Mysql数据 ...

最新文章

  1. springmvc常用注解标签详解
  2. 从寻找可敬的人类开始,扩展未来人类生存的8个维度
  3. php获取date前1分钟hour,php时间轴函数,刚、1分钟前、1小时前、一天前
  4. php时间类函数吗,关于PHP 内置时间类函数的一个小问题
  5. numba.jit警告:Compilation is falling back to object mode WITH looplifting enabled because Function
  6. IDEA生成toString方法的快捷键
  7. 新一代Notebook神器出现,Jupyter危险了!
  8. Tomcat的目录结构详解
  9. mysql 编辑数据库内容_详解mysql数据库增删改操作
  10. Google Health将被解散,谷歌为何折戟于医疗健康?
  11. Linux系统下强制踢掉登录用户
  12. CI学习 – header和footer
  13. Python3分别将list、numpy数组、变量内容写入txt文件中
  14. 天气预报城市代码对应表
  15. python爬取谷歌图片_Python爬取谷歌街景图片
  16. 计算机语言异或符号,异或门的电路符号表达_XOR的电路实现
  17. 【渗透安全】利用腾讯云CDN节点隐藏连接Webshell的真实IP
  18. 江苏省学业水平测试信息技术软件,江苏2019年普通高中信息技术学业水平测试工作顺利结束...
  19. python心率检测
  20. OCX打包CAB并签名的过程

热门文章

  1. 线性结构和非线性结构
  2. int转char类型
  3. 局域网共享打印机设置
  4. win10正版系统镜像
  5. Python发送网络封包,自定义封包结构与内容并发出去
  6. Excel - VBA基础应用
  7. 进阶篇,第一章:矿物的生成
  8. 小天才电话手表z7和z6的区别 哪个性价比高
  9. gcc关于cpu类型的设定
  10. MySQL隔离级别(幻读)