![](/img/trans.png)
[英]When I try to create a table in MySQL, it gives me error code 1215: “Cannot add foreign key constraint”
[英]Cannot add foreign key constraint error occurs when I try to add a THIRD Foreign Key to my table
我一直試圖將屬性O_BagelID添加到我的Order
表中,但是,每當嘗試將其添加時,都會出現錯誤“無法添加外鍵約束”。
如您所見,我已經確保Order中的外鍵和Bagel中的引用都屬於同一類型。 當我刪除O_BagelID和所有相關字段時,我不再遇到該錯誤。
CREATE TABLE `Order`(
OrderID INTEGER NOT NULL,
O_CustomerID INTEGER NOT NULL,
O_BagelCardID VARCHAR(16),
O_BagelID INTEGER,
Order_date DATE NOT NULL,
Order_Cost DECIMAL(4,2) NOT NULL,
Discount_applied BOOLEAN NOT NULL,
PRIMARY KEY(OrderID,O_CustomerID,O_BagelCardID,O_BagelID),
FOREIGN KEY (O_CustomerID)
REFERENCES Customer(CustomerID)
ON DELETE RESTRICT
ON UPDATE CASCADE,
FOREIGN KEY (O_BagelCardID)
REFERENCES BagelCard(BagelCardID)
ON DELETE RESTRICT
ON UPDATE CASCADE,
FOREIGN KEY (O_BagelID)
REFERENCES Bagel(BagelID)
ON DELETE RESTRICT
ON UPDATE CASCADE
);
CREATE TABLE Bagel(
BagelID INTEGER NOT NULL,
Contains_Nuts BOOLEAN NOT NULL,
Price DECIMAL(4,2) NOT NULL,
Description VARCHAR(255),
PRIMARY KEY(BagelID)
);
您應該首先創建表Bagel
,然后創建表Order
。 當您創建對另一個表的引用時,它應該已經存在:
CREATE TABLE Bagel(
BagelID INTEGER NOT NULL,
Contains_Nuts BOOLEAN NOT NULL,
Price DECIMAL(4,2) NOT NULL,
Description VARCHAR(255),
PRIMARY KEY(BagelID)
);
CREATE TABLE `Order`(
OrderID INTEGER NOT NULL,
O_CustomerID INTEGER NOT NULL,
O_BagelCardID VARCHAR(16),
O_BagelID INTEGER,
Order_date DATE NOT NULL,
Order_Cost DECIMAL(4,2) NOT NULL,
Discount_applied BOOLEAN NOT NULL,
PRIMARY KEY(OrderID,O_CustomerID,O_BagelCardID,O_BagelID),
FOREIGN KEY (O_CustomerID)
REFERENCES Customer(CustomerID)
ON DELETE RESTRICT
ON UPDATE CASCADE,
FOREIGN KEY (O_BagelCardID)
REFERENCES BagelCard(BagelCardID)
ON DELETE RESTRICT
ON UPDATE CASCADE,
FOREIGN KEY (O_BagelID)
REFERENCES Bagel(BagelID)
ON DELETE RESTRICT
ON UPDATE CASCADE
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.