在MySql5.6中创建复合外键时,为什么主键的位置相关?

时间:2018-10-02 01:38:58

标签: mysql sql foreign-keys

我正在使用MySQL 5.6,并且已经阅读了MySql参考指南,但没有提到在创建复合外键时PK应该位于列表的末尾。

指南中有关列的唯一要求如下: “在引用表中,必须有一个索引,其中外键列以相同的顺序列为第一列。”

如果是这样,那么为什么以下操作不起作用?

alter table table_1
add constraint "fk_key_1" FOREIGN KEY "ix_key_1"  ("col_1", "col_2") REFERENCES "table_2" ("pk_col", "col_2") ON DELETE NO ACTION;

但这可行-

alter table table_1
add constraint "fk_key_1" FOREIGN KEY "ix_key_1"  ("col_1", "col_2") REFERENCES "table_2" ("col_2", "pk_col") ON DELETE NO ACTION;

1 个答案:

答案 0 :(得分:0)

外键必须匹配主键(或某些键,但最好是主键)-类型和顺序。

如果可行:

FOREIGN KEY "ix_key_1"  ("col_1", "col_2") REFERENCES "table_2 ("col_2", "id_col") ON DELETE NO ACTION;

这是因为table_2上的主键被定义为(col_2, id_col)而不是(id_col, col_2)