当前位置: 首页 > 面试题库 >

MySQL删除一些外键

邓仲卿
2023-03-14
问题内容

我有一个表,该表的主键在其他几个表中使用,并且对其他表有几个外键。

CREATE TABLE location (
   locationID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
   ...
) ENGINE = InnoDB;

CREATE TABLE assignment (
   assignmentID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   locationID INT NOT NULL,
   FOREIGN KEY locationIDX (locationID) REFERENCES location (locationID)
   ...
) ENGINE = InnoDB;

CREATE TABLE assignmentStuff (
   ...
   assignmentID INT NOT NULL,
   FOREIGN KEY assignmentIDX (assignmentID) REFERENCES assignment (assignmentID)
) ENGINE = InnoDB;

问题是,当我尝试删除外键列之一(即locationIDX)时,它给了我一个错误。

“错误1025(HY000):重命名错误”

如何在没有出现此错误的情况下将列删除到上面的分配表中?


问题答案:

正如解释在这里,似乎外键约束必须由被丢弃 的约束名称
,而不是索引名。语法为:

alter table footable drop foreign key fooconstraint


 类似资料:
  • (警告:我不是MySQL专业人士,我使用工作台代替知道命令,所以我的问题可能很简单) 我试图重命名表(user)中的主键(userID),但MySQL不允许(错误号150)。经过一番挖掘,我似乎必须先删除外键,然后才能重命名主键。 因此,在Workbench中,我转到下一个表(问题)并选择alter table,然后转到外键选项卡。我在左侧窗口中选择唯一的外键(fk\u question\u us

  • 问题内容: 我想使用外键来保持完整性并避免使用孤立键(我已经使用过innoDB)。 如何创建在CASCADE上删除的SQL语句? 如果我删除一个类别,那么如何确保它不会删除也与其他类别相关的产品。 数据透视表“ categories_products”在其他两个表之间创建多对多关系。 问题答案: 如果您的级联删除某个产品是因为该产品属于被杀类别的成员,那么它会删除该产品,那么您的外键设置不正确。给

  • 本文向大家介绍MySQL删除外键问题小结,包括了MySQL删除外键问题小结的使用技巧和注意事项,需要的朋友参考一下 MySQL:MySQL不能删除外键,抱错Error on rename of ./ruler/test2child to ./ruler/#sql2-298-92 (errno: 152) 曾经这是MySQL的一个bug,但是现在只是MySQL的一个不友好的地方。 例子如下: 这里并

  • 我正在使用mysql并试图删除外部约束,但我无法删除该密钥。 它的节目, 如何解决这个问题,请帮助我。

  • 我在表中添加了一列(下面的查询) 现在我想删除这个专栏(fk_job_id)。我尝试了这些查询,但它们给出了错误。 第一个Alter语句给出的错误为-(但该列存在)。 第二个Alter语句给出错误,因为-

  • 问题内容: 如何从MySQL表中删除所有重复数据? 例如,具有以下数据: 我会使用,如果它是一个查询。 我该怎么做才能只删除重复项并仅保留每个记录一个? 问题答案: 编辑者警告:此解决方案的计算效率低下,可能会降低大型表的连接。 注意:您 需要 首先在表的 测试副本 上执行此操作! 完成此操作后,我发现,除非也包含,否则它将删除表中的每一行。 如果要使行的值保持最低,请执行以下操作: 如果要保留最