【问题标题】:How to DELETE a record which has foreign keys - MySQL Java如何删除具有外键的记录 - MySQL Java
【发布时间】:2014-03-29 05:40:05
【问题描述】:

我有一张像这样的表

Car ID     Car Name     Part ID      Stock ID 
___________________________________________________
1          Audi          1             1

2          Benz          2             2

3          Corsa 1.3     3             3

4          Corsa 2.0     3             4

现在,如果我想删除 Corsa 1.3,它会显示 Foreign key constraint 零件 ID。由于 Part ID 无法删除。

我该如何解决这个问题?

【问题讨论】:

标签: mysql sql


【解决方案1】:

您不能删除引用外键的记录;这就是它们的全部意义所在。

您需要做的是删除键引用的记录或删除约束。

【讨论】:

    【解决方案2】:

    您应该将它抱怨的字段设置为null,然后删除将成功。在您的情况下,在尝试删除 corsa 1.3 之前,将其部件 id 设置为 null,从而删除引用。

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      在创建表时指定约束,该表指示在更新和删除时如何处理主键和外键,您可以指定更新和/或删除时的级联,这是您遇到的问题

      create table Orgs       (
          id bigint unsigned auto_increment,
          name varchar(100) not null,
          primary key (id),
          unique index name_ind (name)
      ) engine=InnoDB;
      
      create table Households (
          id bigint unsigned,
          Orgid bigint unsigned,
          household varchar(20) not null,
          primary key (id),
          index org_ind (Orgid),
          foreign key (Orgid) references Orgs(id) on update cascade on delete cascade
      )  engine=InnoDB;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-04
        相关资源
        最近更新 更多