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

vof42yt1  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(297)

我使用的是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;
kdfy810k

kdfy810k1#

外键必须与主键(或某个键,但最好是主键)在类型和顺序上匹配。
如果可行:

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) .

相关问题