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
答案 0 :(得分:1)
您必须使用符号名称(约束的名称)来删除外键,而不是索引的名称。在这种情况下:tbl_table1_ibfk_2。
ALTER TABLE tbl_table1 DROP FOREIGN KEY tbl_table1_ibfk_2