InnoDB允许外键引用任何索引列或列组。但是,在被引用的表中,必须有一个索引,其中被引用的列以相同的顺序列为第一列。
NDB在引用为外键的任何列上都需要一个显式的唯一键(或主键)。
因此,如果您使用innodb,则MysqL不允许您在不是索引最左边字段的字段上创建外键。
原因是在多列索引中,您不能基于不是最左边的字段来查找值,因此该索引不能用于快速查找外键检查的值。
MysqL索引的这种行为在有关多列索引的MysqL文档中进行了描述:
如果列不构成索引的最左前缀,则MysqL无法使用索引来执行查找。