从MySQL文档:
InnoDB允许外键约束引用非唯一键。这是对标准SQL的InnoDB扩展。
但是,出于实际原因,要避免在引用表的非唯一列上使用外键。也就是说,在这种情况下“ ON DELETE CASCADE”的语义应该是什么?
该文档进一步建议:
对非唯一键或包含NULL值的键的外键引用的处理没有很好的定义(…)。建议您使用仅引用UNIQUE(包括PRIMARY)和NOT NULL键的外键。

从MySQL文档:
InnoDB允许外键约束引用非唯一键。这是对标准SQL的InnoDB扩展。
但是,出于实际原因,要避免在引用表的非唯一列上使用外键。也就是说,在这种情况下“ ON DELETE CASCADE”的语义应该是什么?
该文档进一步建议:
对非唯一键或包含NULL值的键的外键引用的处理没有很好的定义(…)。建议您使用仅引用UNIQUE(包括PRIMARY)和NOT NULL键的外键。