簡體   English   中英

為什么不能添加由兩列組成的外鍵?

[英]Why can't i add a foreign key formed of two columns?

為什么不能在note添加外鍵組?

我得到Error Code: 1215. Cannot add foreign key constraint

create table student(
    id_student int auto_increment not null,
    prenume varchar(255) not null,
    nume varchar(255) not null,
    constraint id_student_pk_STUDENT primary key(id_student));

create table materie(
    id_materie int auto_increment not null,
    nume_materie varchar(255) not null,
    constraint id_materie_pk_MATERIE primary key(id_materie));

create table inscris(
    id_student int not null,
    id_materie int not null,
    constraint id_student_fk_INSCRIS foreign key(id_student) references student(id_student),
    constraint id_materie_fk_INSCRIS foreign key(id_materie) references materie(id_materie));

create table note(
    id_student int not null,
    id_materie int not null,
    nota int,
    constraint fk_id_student_materie_NOTE foreign key(id_student, id_materie) references inscris(id_student, id_materie));

這是show engine innodb status說明的內容:

最新外鍵錯誤\\ n ------------------------ \\ n2017-05-18 19:44:21 0x700007362000表目錄的外鍵約束錯誤/ note:\\ n外鍵(id_student,id_materie)引用inscris(id_student,id_materie)):\\ n在引用表中找不到索引,在該表中\\ n被引用的列顯示為第一列,或者列類型\\在表和\\ n請注意,在使用> = InnoDB-4.1.12創建的n表中,ENUM和SET的內部存儲類型已更改,並且舊表中的此類列\\ n不能被新表中的此類列引用。 \\ n有關正確的外鍵定義,請參考http://dev.mysql.com/doc/refman/5.7/en/innodb-foreign-key-constraints.html

外鍵必須引用一個鍵,您需要在inscris中添加一個索引,其中包括在筆記的FK中引用的兩個字段。 其他FK的工作不是因為它們是單列,而是因為所引用的列已建立索引。

也許這種選擇會繞過您的問題。 在您的inscris表中添加第三列,並將該第三列作為主鍵。 然后將您的note外鍵指向該主鍵列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM