Như tài liệu MySQL trên các khóa ngoại chỉ ra :
Vì vậy, nếu bạn sử dụng innodb, thì MySQL không cho phép bạn tạo khóa ngoại trên một trường không phải là trường ngoài cùng bên trái trong chỉ mục.
Lý do là trong chỉ mục nhiều cột, bạn không thể tra cứu giá trị dựa trên trường không phải là trường bên trái nhất, do đó chỉ mục không thể được sử dụng để nhanh chóng tra cứu giá trị cho việc kiểm tra khóa ngoại.
Hành vi này của chỉ mục MySQL được mô tả trong tài liệu MySQL trên chỉ mục nhiều cột :