我正在使用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;
答案 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)
。