我正在為一個學校專案構建一個資料庫,但由于某種原因,我無法在 2 個表(只有那 2 個)之間進行外鍵參考。我的專案有 14 個表,它適用于所有其他表。
表格制作如下:
create table degree(
title varchar(50),
idryma varchar(40),
bathmida enum('High School', 'Univercity', 'Master', 'PHD'),
constraint degree_id primary key (title, idryma)
);
create table has_degree(
degree_title varchar(50),
degree_idryma varchar(40),
employee_username varchar(12),
acquisition_year year(4),
grade float(3,1),
constraint has_degree_id primary key (degree_title, degree_idryma, employee_username)
);
然后我嘗試更改表,以便建立外鍵連接:
alter table has_degree add foreign key (degree_title) references degree(title);
alter table has_degree add foreign key (degree_idryma) references degree(idryma);
但我繼續得到
錯誤代碼:1824。無法打開參考的表“度”
我試圖讓它們像這樣:
create table degree(
title varchar(50),
idryma varchar(40),
bathmida enum('High School', 'Univercity', 'Master', 'PHD'),
constraint degree_id primary key (title, idryma)
);
create table has_degree(
degree_title varchar(50),
degree_idryma varchar(40),
employee_username varchar(12),
acquisition_year year(4),
grade float(3,1),
foreign key (degree_title) references degree(title),
foreign key (degree_idryma) references degree(idryma),
/*employee is an other table that I use and that works just fine*/
foreign key (employee_username) references employee(employee_username),
constraint has_degree_id primary key (degree_title, degree_idryma, employee_username)
);
但唯一改變的是我得到
錯誤代碼:1822。無法添加外鍵約束。參考表“degree”中缺少約束“has_degree_ibfk_2”的索引
uj5u.com熱心網友回復:
表中外鍵中的列has_degree必須與參考表的主鍵中的列相同degree。
在這種情況下,主鍵degree由兩varchar列組成。
因此,has_degree該參考中的外鍵也必須只有兩varchar列,并且這些列中has_degree的值必須與degree.
您以這種方式定義了外鍵:
foreign key (degree_title) references degree(title),
foreign key (degree_idryma) references degree(idryma),
但這是兩個外鍵,每個外鍵都有一個列。您需要一個包含兩列的外鍵:
foreign key (degree_title, degree_idryma) references degree(title, idryma),
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/359852.html
下一篇:獲取匹配資料,否則為標準資料
