MySQL 主动获取外键关系中父表数据的可删除状态

发布于 2022-09-11 20:58:43 字数 1318 浏览 21 评论 0

    • 外键关系中父表的行数据在子表中有关联的时候是不可删除的,那么有什么办法可以主动获取
      当前父表中每行数据的状态 - 是否可以被删除
    • 下面建了两个表做测试,希望能在两个表的基础上给出解决方法
    • 父表建表语句:

       create table category (
         sid varchar(50) not null primary key
       );
    • 向父表中插入数据:

       INSERT INTO demodb.category (sid) VALUES ('干果');
       INSERT INTO demodb.category (sid) VALUES ('水果');
       INSERT INTO demodb.category (sid) VALUES ('蔬菜');
    • 子表建表语句:

       create table goods (
         sid      varchar(50) not null primary key,
         category varchar(50) null,
         constraint goods_category_sid_fk foreign key (category) references             
         category(sid) on update cascade
       );
    • 向子表插入数据:

       INSERT INTO demodb.goods (sid, category) VALUES ('苹果', '水果');
       INSERT INTO demodb.goods (sid, category) VALUES ('香蕉', '水果');
       INSERT INTO demodb.goods (sid, category) VALUES ('空心菜', '蔬菜');
       INSERT INTO demodb.goods (sid, category) VALUES ('菠菜', '蔬菜');
    • 在上面数据的基础上如果要删除表 category 中的 水果,数据库则会报错
      那么我想要在用户做删除操作之前就得知表 category 中的所有数据哪些行可删除
      哪些行不可删除,请不要在后端(比如JAVA)中通过遍历表 category 的数据
      来获取,使用SQL语句如何在获取表 category 的数据的同时追加每行的状态
    • 有必要的话:QQ=409223171

    如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
    列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文