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

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

       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
    阅读 1.5k
    撰写回答
    你尚未登录,登录后可以
    • 和开发者交流问题的细节
    • 关注并接收问题和回答的更新提醒
    • 参与内容的编辑和改进,让解决方法与时俱进
    推荐问题