Zoals MySQL-documentatie op buitenlandse sleutels aangeeft :
Dus als je innodb gebruikt, staat MySQL je niet toe een externe sleutel te maken op een veld dat niet het meest linkse veld in een index is.
De reden is dat u in een index met meerdere kolommen geen waarde kunt opzoeken op basis van een veld dat niet het meest links is, daarom kan de index niet worden gebruikt om snel de waarde op te zoeken voor een externe sleutelcontrole.
Dit gedrag van MySQL-indexen wordt beschreven in de MySQL-documentatie op indexen met meerdere kolommen :