我正在嘗試創建一個子表,該表約束來自父表的 3 個外鍵,但收到錯誤1215:無法添加外鍵約束
父表:
CREATE TABLE `Availability` (
`time_of_day` varchar(20) NOT NULL,
`day_of_week` varchar(20) NOT NULL,
`email` varchar(60) NOT NULL,
PRIMARY KEY (`time_of_day`,`day_of_week`,`email`),
KEY `email` (`email`),
CONSTRAINT `Availability_ibfk_1` FOREIGN KEY (`email`) REFERENCES `service_provider` (`email_service_provider`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
子表(由于上述錯誤我無法構建):
CREATE TABLE TEST1
(
num_request INT NOT NULL,
time_of_day VARCHAR(20) NOT NULL,
day_of_week VARCHAR(20) NOT NULL,
email VARCHAR(60) NOT NULL,
PRIMARY KEY (num_request),
Foreign key (time_of_day) references Availability(time_of_day),
Foreign key (day_of_week) references Availability(day_of_week),
Foreign key (email) references Availability(email)
);
請告訴我我做錯了什么...謝謝大家。
uj5u.com熱心網友回復:
當您為具有復合主鍵(即多列的鍵)的表創建外鍵時,您也應該使外鍵復合。
CREATE TABLE TEST1
(
num_request INT NOT NULL,
time_of_day VARCHAR(20) NOT NULL,
day_of_week VARCHAR(20) NOT NULL,
email VARCHAR(60) NOT NULL,
PRIMARY KEY (num_request),
Foreign key (time_of_day, day_of_week, email) references Availability(time_of_day, day_of_week, email)
)
您試圖做的是創建三個單獨的約束。
uj5u.com熱心網友回復:
雖然現在我有一個新問題,試圖向上面的子表添加一行,但我收到錯誤 1452:無法添加或更新子行。
這是我在父表中的行:
time_of_day | 星期幾 | 電子郵件
“晚上”“星期一”“[email protected]”
但是在嘗試向 TEST1(子表)添加一行時,我收到錯誤1452 - 無法添加或更新子行:
insert into TEST1 (num_request, time_of_day, day_of_week, email)
Values (1, 'Evening', 'monday', '[email protected]')
我沒有看到我錯過了什么,我在父表中有這些行,輸入的型別是相同的......
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/385455.html
上一篇:MySql從兩列到三列
