SQL ON DELETE CASCADE,删除以哪种方式发生?

2024-01-11

如果我在数据库中有两个关系,如下所示:

CREATE TABLE Courses (
  CourseID int NOT NULL PRIMARY KEY,
  Course VARCHAR(63) NOT NULL UNIQUE,
  Code CHAR(4) NOT NULL UNIQUE
);

CREATE TABLE BookCourses (
  EntryID int NOT NULL PRIMARY KEY,
  BookID int NOT NULL,
  Course CHAR(4) NOT NULL,
  CourseNum CHAR(3) NOT NULL,
  CourseSec CHAR(1) NOT NULL
);

我在两者之间建立了外键关系,如下所示:

ALTER TABLE BookCourses
ADD FOREIGN KEY (Course)
REFERENCES Courses(Code)
ON DELETE CASCADE;

然后你可以看到Course属性中的BookCourses关系引用Code属性中的Courses关系。

我的问题是,当两个关系中的任何一个发生删除时,删除会以哪种方式级联?如果我删除一个元组Courses关系,它会删除所有引用元组吗?BookCourses关系,还是相反?


当您删除表上的某些内容时,级联将起作用Courses。表上的任何记录BookCourses引用了表Courses将被自动删除。

但是当你尝试删除表时BookCourses仅表本身受到影响,而不影响表本身Courses

后续问题:你为什么有CourseID在表类别上?

也许你应该将你的架构重组为这样,

CREATE TABLE Categories 
(
  Code CHAR(4) NOT NULL PRIMARY KEY,
  CategoryName VARCHAR(63) NOT NULL UNIQUE
);

CREATE TABLE Courses 
(
  CourseID INT NOT NULL PRIMARY KEY,
  BookID INT NOT NULL,
  CatCode CHAR(4) NOT NULL,
  CourseNum CHAR(3) NOT NULL,
  CourseSec CHAR(1) NOT NULL,
);

ALTER TABLE Courses
ADD FOREIGN KEY (CatCode)
REFERENCES Categories(Code)
ON DELETE CASCADE;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL ON DELETE CASCADE,删除以哪种方式发生? 的相关文章

  • 将查询结果作为 CSV 文件从 Docker PostgreSQL 容器导出到本地计算机

    我不确定这是否可能 或者我是否做错了什么 因为我对 Docker 还很陌生 基本上 我想将 PostgreSQL docker 容器内的查询结果作为 csv 文件导出到本地计算机 这就是我到目前为止所得到的 首先 我使用以下命令运行 Pos
  • BIT(1) 的存储大小是多少?

    我一直认为a的存储大小BIT 1 列为 1 位 But http dev mysql com doc refman 5 6 en storage requirements html http dev mysql com doc refman
  • 将日期时间列拆分为年、月和周

    我想拆分日期时间列 以便年份和月份在 select 语句输出中都有自己的列 我还希望有一个按一年中的一周而不是特定日期的专栏 基本上 我希望单独的年 月和周列显示在我的 select 语句输出中 尝试使用DatePart http msdn
  • 如何使 cx-oracle 将查询结果绑定到字典而不是元组?

    这是我的代码 我想找到一种方法将查询结果作为字典列表而不是元组列表返回 看起来 cx oracle 通过部分文档讨论 绑定 来支持这一点 虽然我不知道它是如何工作的 def connect dsn cx Oracle makedsn hos
  • 如何复制身份列中的数据?

    我有一张桌子identity列在一台服务器中 并且在另一台服务器中有一个具有相同结构的其他表 现在我想将所有数据从一个表复制到另一个表 但我无能为力 我已经创建了一个链接服务器 我用这个 insert into server databas
  • 使用 LINQ 的 Silverlight 客户端数据库

    我正在创建一个浏览器外 silverlight 应用程序 并希望在客户端有一个数据库 我看过 sqlite 但似乎它不适用于 silverlight 如果我能使用 LINQ 那就太好了 我更喜欢免费的解决方案 但付费始终是一种选择 有什么建
  • 如何在 SQL 中引用自定义字段

    我正在使用 mssql 但在使用子查询时遇到问题 真正的查询相当复杂 但其结构与此相同 select customerName customerId select count from Purchases where Purchases c
  • 在 SQL 中用加号 (+) 显示正结果

    我有以下查询 SELECT CONVERT DECIMAL 11 1 SUM Column 1000 1 AS NAME FROM Table 我有 1000 1 的原因是我希望结果以千为单位显示并反转 负值作为正值 反之亦然 只有一位小数
  • 为什么Aries在数据库管理恢复中要先执行redo before undo?

    如果 Aries 算法已经知道在分析阶段之后要撤消哪些事务 为什么它会在撤消之前应用重做 我知道 认为 这与 Lsn 数字和维护一致性有关 因为在磁盘上刷新的数据撤消事务可能与崩溃时撤消事务不同 由于脏数据 页 但我找不到这个问题的任何 正
  • 不使用 Django 的 Python 数据库(适用于 Heroku)

    令我惊讶的是 我没有发现其他地方提出过这个问题 简而言之 我正在编写一个应用程序 计划部署到云 可能使用 Heroku 它将执行各种网络抓取和数据收集 它将位于云中的原因是 我可以将其设置为每天自行运行 并将数据提取到数据库 而无需我的计算
  • 无法从 CursorWindow 读取第 0 行,第 -1 列?

    我在使用数据库时遇到问题 当我运行 SQLView java 时 出现致命异常 java lang RuntimeException Unable to start activity ComponentInfo com jacob eind
  • 如何证明2条sql语句是等价的

    我开始用连接和子语句重写一个复杂的 SQL 语句 并获得一个看起来更简单的语句 我通过在相同的数据集上运行并获得相同的结果集来测试它 一般来说 我如何 概念上 证明这两个陈述在任何给定数据集中都是相同的 我建议学习关系代数 正如 Mchl
  • 使用连接字段的 SQL JOIN

    我有两个表 Table1 包含一列 该列构成 Table2 中列的部分值 例如 表1 XName 123456 表2 ZName ABC 123456 我需要创建一个与这些匹配的 JOIN 但是使用 MS SQL 2008 我在完成这项工作
  • 如何在 postgresql 中使用“时间”字段按小时分组?

    我有一张带有一列的桌子ctime类型的time without time zone cdate ctime 2016 12 24 12 02 17 2016 12 24 12 02 32 2016 12 24 12 03 00 2016 1
  • 如何获取sql server 2005中数据库连接的详细列表?

    如何获取sql server 2005中数据库连接的详细列表 使用系统存储过程sp who2
  • FROM 子句中子查询末尾随机字母的含义 - SQL

    我终于成功将两个sql sum查询的结果求和了 这家伙迈出了一小步 我的问题与代码中的最后一个字符 Z 有关 SELECT SUM hr FROM SELECT SUM amount AS hr FROM Try again dbo tue
  • 参数的性能不如硬编码值

    我有一个执行得很糟糕的存储过程 当我声明一个变量时 设置它的值 然后在 where 子句中使用它 该语句需要一个多小时才能运行 当我对 where 子句中的变量进行硬编码时 它的运行时间不到一秒 我开始通过执行计划来查找问题所在 看起来当我
  • SQL 执行计划是基于架构还是数据,或者两者兼而有之?

    我希望这个问题不太明显 我已经找到了很多关于解释执行计划的好信息 但有一个问题我还没有找到答案 该计划 更具体地说是相对 CPU 成本 仅基于架构 还是数据库中当前的实际数据 我尝试对我的产品数据库中需要索引的位置进行一些分析 但正在使用我
  • 直接从表中选择和视图之间的区别

    直接从表中选择数据或从视图中选择数据有什么区别 每一种的最佳用途是什么 根据微软的说法 如果你使用的话会有性能优势indexedSQL Server 2000 2005 2008 中的视图 索引视图可以通过以下方式提高查询性能1 可以预先计
  • 在 Android 版 ORMLite 中加入类会引发 SQL 异常:找不到外部类,反之亦然

    我正在尝试使用 QueryBuilder 为两个不同的类创建一个联接查询 一个Product类和一个Coupon类 引用 Product 属性 storeId public class Coupon DatabaseField column

随机推荐

  • 在 ie 8 中打印浮点图

    我目前正在使用http www flotcharts org http www flotcharts org 对于一个绘图插件 我正在尝试实现从内容包围的页面上打印流程图的能力 我正在尝试打开一个新窗口并打印一个画布对象 这样我就可以只打印
  • 更改方法重写中的参数修饰符

    我知道一个params修饰符 将数组类型的一个参数转换为所谓的 参数数组 特别不是方法签名的一部分 现在考虑这个例子 class Giraffid public virtual void Eat int leaves Console Wri
  • 如何让 Django-Ajax-Selects 在 Django Admin 中工作?

    Django Ajax 选择 http code google com p django ajax selects 这是我所做的 但无济于事 Added ajax select to my INSTALLED APPS in setting
  • 6 个位置内 3 个元素的排列

    我正在寻找排列 或组合 c a b c 在始终具有具有替代元素的序列的条件下的六个位置内 例如abcbab 排列可以很容易地得到 abc lt c a b c permutations n 3 r 6 v abc repeats allow
  • 为什么使用分号时 JavaScript 不被解释为代码块?

    In Chrome版本 72如果我运行以下命令JavaScript没有错误 prop p prop prop gt gt prop prop 因此 这行代码意外地被解释为表达式语句 但是 如果我在末尾运行相同的代码并带有分号 它将按预期运行
  • 为什么我们不能检查react-native应用程序的样式属性?

    我想检查元素的颜色是否为白色 如下所示 if styles background white console log ok console log styles background white gt was false 1 为什么 1 返
  • DBMS_STANDARD 包的过程和/或函数是否应该在 PL/SQL 代码中使用?

    最近 我遇到了一个BEFORE INSERT OR UPDATE在桌子上触发 在这个触发器中 作者依赖于INSERTING and UPDATING函数 都返回一个BOOLEAN 的DBMS STANDARD包来确定触发器是在插入之前还是更
  • Typekit 脚本缓慢/无响应/卡住

    我在我的网站上安装了 typekit 通常在开头的 head 标签后面有两行 js 但加载字体非常慢 无响应 这可以通过刷新页面来完全解决 之后 typekit 字体完美地加载迅速地 但从用户的角度来看 他们永远不会知道要这样做 因此他们将
  • Django South - 表已经存在

    我正在尝试从南方开始 我有一个现有的数据库 我添加了南 syncdb schemamigration initial 然后 我更新了models py添加一个字段并运行 manage py schemamigration myapp aut
  • 结构指令、位置工具提示

    我创建了一个结构指令 当我将鼠标悬停在文本 see tooltip 上时 该指令会根据 ng template 内的内容显示工具提示 工具提示显示正确 但它显示在屏幕的 top 0px left 0px 位置 我希望它显示在文本 see t
  • 带有标题栏和 Windows 任务栏的 Tkinter 窗口

    我已经广泛搜索这个问题 但似乎没有人知道 我在 python 2 7 中创建了一个简单的 tkinter 窗口 tcl 8 5 并希望它最大化 就像我点击右上角的最大化按钮一样 使用 fullscreenoption 不是一个选项 因为它删
  • Eclipse、Java:如何导入 zip 格式的库?

    好吧 这是基本的 但似乎正常的方法对我来说不起作用 我正在尝试导入 jSSC 库 用于与串行端口等进行通信 最新的库是 jSSC 0 9 0 Release 所以 我尝试了以下方法 将 zip 文件放置在工作区中 并将其添加为项目属性 gt
  • 从 Python 子进程执行 shell 脚本

    我需要从 python 调用 shell 脚本 问题是 shell 脚本在完成之前会问几个问题 我找不到使用的方法subprocess 使用pexpect似乎有点过头了 因为我只需要启动它并向它发送几个 是 请不要建议需要修改 shell
  • eclipse 外部工具配置 -> 类路径中引用的库不存在:org.eclipse.swt

    更新到最新的 eclipse mars 版本后 版本 Mars 候选版本 1 4 5 0RC1 内部版本号 20150521 1252 我无法启动任何 Ant 脚本 它总是会导致以下错误 首先我检查路径是否真的正确 并确保特定的jarorg
  • 将轮廓路径转换为 ​​svg 路径

    我正在使用 openCV 和 python 从图像中提取轮廓 现在我需要将这些轮廓路径 列表 导出为 svg 路径 我怎样才能做到这一点 code ret thresh cv2 threshold imgray 27 25 0 contou
  • 如何生成“随机”但又“唯一”的数字?

    随机数是如何生成的 java等语言如何生成随机数 特别是GUID是如何生成的 我发现像伪随机数生成器这样的算法使用初始值 但我需要创建一个随机数程序 其中一旦出现的数字就永远不会重复 即使系统重新启动等也是如此 我认为我需要将这些值存储在任
  • 从 firebase 数据库检索数据到 textview 时如何创建换行符?

    我知道如果我想创建一个新行 我必须插入 n无论我需要在哪里创建该线 但我得到的是没有我在 firebase 数据库中已有的行的文本 有人可以告诉我如何解决这个问题吗 例如 如果我在数据库中有 hello n world 我明白了hello
  • jqGrid 自定义编辑对话框

    我正在开发一个使用 jqGrid 的应用程序 问题是在行编辑时出现的编辑对话框必须具有特定的布局 所以我更愿意通过ajax加载它 然后手动将数据发送回jqGrid 我在论坛上搜索了很多 但找不到如何执行此操作的示例 因此 我只需要 jqGr
  • 如何确定应用程序包中是否存在文件?

    抱歉 今天的第二个问题很愚蠢 是否可以确定应用程序包中是否包含文件 我可以毫无问题地访问文件 即 NSString pathAndFileName NSBundle mainBundle pathForResource fileName o
  • SQL ON DELETE CASCADE,删除以哪种方式发生?

    如果我在数据库中有两个关系 如下所示 CREATE TABLE Courses CourseID int NOT NULL PRIMARY KEY Course VARCHAR 63 NOT NULL UNIQUE Code CHAR 4