如何更改/删除MySql表上的外键并关联到另一个表?

时间:2015-10-22 06:26:21

标签: mysql

tbl_table1 'Id''Type_Id'和'Name'。
'Type_Id'是Foreign_Key,引用 tbl_table2 'Type_Id'

我制作了 tbl_table2 的副本,并使用相同的值和列将其重命名为 tbl_glob_table2

我的问题:
如何将Foreign_Key引用从 tbl_table2.Type_Id 更改为 tbl_glob_table2.Type_Id

我将更新tbl_table1的错误消息:
“SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败。

ALTER TABLE tbl_table1 DROP FOREIGN KEY Type_Id
给我以下错误信息:
#1091 - 无法DROP'Type_Id';检查列/密钥是否存在

创建表格声明:

SHOW CREATE TABLE tbl_table1
    CREATE TABLE `tbl_table1` (
     `Id` varchar(10) COLLATE utf8_bin NOT NULL,
     `Type_Id` int(3) NOT NULL,
     `Name` varchar(30) COLLATE utf8_bin NOT NULL DEFAULT 'noname',
     PRIMARY KEY (`Id`),
     KEY `FK_tbl_table1_type` (`Type_Id`),
     CONSTRAINT `tbl_table1_ibfk_2` FOREIGN KEY (`Type_Id`) REFERENCES `tbl_table2` (`Type_Id`) ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

1 个答案:

答案 0 :(得分:1)

您必须使用符号名称(约束的名称)来删除外键,而不是索引的名称。在这种情况下:tbl_table1_ibfk_2。

ALTER TABLE tbl_table1 DROP FOREIGN KEY tbl_table1_ibfk_2