我正在尝试同时创建一个带有索引的外键,并明确指定它们的名称。
手册说:
[CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]
index_name 表示外键 ID。如果给定,如果明确定义了外键的索引,则忽略它。否则,如果 InnoDB 为外键创建索引,它使用 index_name 作为索引名称。
所以我尝试了以下方法:
ALTER TABLE MyTable
ADD CONSTRAINT FK_MyTable_Zone FOREIGN KEY
IDX_MyTable_Zone (zoneId)
REFERENCES Zone (id);
但是SHOW CREATE TABLE
说明IDX_MyTable_Zone
没有考虑索引名,索引名也使用了外键名:
CREATE TABLE `MyTable` (
`zoneId` int(10) unsigned NOT NULL,
KEY `FK_MyTable_Zone` (`zoneId`),
CONSTRAINT `FK_MyTable_Zone` FOREIGN KEY (`zoneId`) REFERENCES `Zone` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我错过了什么?