我使用的是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条答案
按热度按时间kdfy810k1#
外键必须与主键(或某个键,但最好是主键)在类型和顺序上匹配。
如果可行:
这是因为
table_2
定义为(col_2, id_col)
而不是(id_col, col_2)
.