zoukankan      html  css  js  c++  java
  • 表与表直接由于存在外键约束而导致删除操作失败

    如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表。外键是用来实现参照完整性的。

    在我的数据中,有两张表,一张是light,一张是collector.

    下图是light表,里面的字段collectorid是表collector的主键,对于light表来说,collectorid是它的外键:

    image

    下图是collector表,collectorid是这个表的主键,

    image

    在Microsoft SQL Server Management Studio中,建立一个外键的步骤如下图所示:

    在需要建立外键的表上(light)上,右键->选择新建外键:

    image

    选择表和列规范:

    image

    选择主键表为collector,外键表为light(为什么light是外键表呢??因为对light来说,collecrorid是它的外键)。

    image

    选择删除规则为级联(casecade),如果不选择级联会出现什么问题呢?考虑下面的场景,现在需要删除collector中某些数据,但是由于collectorid是light表的外键,也就是light还在引用要删除数据的collectorid,这样就会出现删除失败的情况,为了避免这种情况出现,我们就要选择外键的删除规则为级联(cascade)方式,这样在删除collector表中的数据时,所以引用colletorid的light中的数据就会被自动的删除。

    image

    在我的项目中出现的问题如下图所示:

    image

    上面页面显示的数据就是来自于collector,由于当时light选择了collector的collectorid作为它的外键,但是有没有在建立light外键的时候选择级联方式,所以就出现了删除失败的情况。

  • 相关阅读:
    数据表格优化
    vue数组和对象的监听变化
    python flask框架搭建以及大佬代码参考
    简单爬虫
    srs的基本配置
    记录飞天程序库调用
    面试题 递归算法1+2+....+100求和
    下载列表组件
    Prometheus之系统安装,启动
    nginx之日志
  • 原文地址:https://www.cnblogs.com/justinzhang/p/2117343.html
Copyright © 2011-2022 走看看