首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySQL删除一些外键

MySQL删除一些外键
EN

Stack Overflow用户
提问于 2009-05-08 05:25:55
回答 10查看 375.7K关注 0票数 217

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

代码语言:javascript
复制
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):重命名时出错”

如何在不出现此错误的情况下删除上面赋值表中的列?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2009-05-08 05:54:54

正如here所解释的,外键约束似乎必须通过约束名称而不是索引名称来删除。

语法为:

代码语言:javascript
复制
ALTER TABLE footable DROP FOREIGN KEY fooconstraint;
票数 506
EN

Stack Overflow用户

发布于 2009-05-08 05:50:21

外键是用来确保数据完整性的,所以只要列是外键的一部分,就不能删除它。你需要先放下钥匙。

我认为下面的查询可以做到这一点:

代码语言:javascript
复制
ALTER TABLE assignmentStuff DROP FOREIGN KEY assignmentIDX;
票数 21
EN

Stack Overflow用户

发布于 2016-01-03 16:42:31

正如每个人上面所说的,你可以很容易地删除一个FK。然而,我只是注意到在某些情况下可能有必要丢弃密钥本身。如果您有任何错误消息来创建另一个类似上一个索引的索引,我的意思是使用相同的名称,删除与该索引相关的所有内容将非常有用。

代码语言:javascript
复制
ALTER TABLE your_table_with_fk
  drop FOREIGN KEY name_of_your_fk_from_show_create_table_command_result,
  drop KEY the_same_name_as_above
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/838354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档