我有一个表,它的主键在其他几个表中使用,并且有几个指向其他表的外键。
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):重命名时出错”
如何在不出现此错误的情况下删除上面赋值表中的列?
发布于 2009-05-08 05:54:54
发布于 2009-05-08 05:50:21
外键是用来确保数据完整性的,所以只要列是外键的一部分,就不能删除它。你需要先放下钥匙。
我认为下面的查询可以做到这一点:
ALTER TABLE assignmentStuff DROP FOREIGN KEY assignmentIDX;
发布于 2016-01-03 16:42:31
正如每个人上面所说的,你可以很容易地删除一个FK。然而,我只是注意到在某些情况下可能有必要丢弃密钥本身。如果您有任何错误消息来创建另一个类似上一个索引的索引,我的意思是使用相同的名称,删除与该索引相关的所有内容将非常有用。
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
https://stackoverflow.com/questions/838354
复制相似问题