簡體   English   中英

#1215 - 無法添加外鍵約束

[英]#1215 - Cannot add foreign key constraint

  --Items table
CREATE TABLE IF NOT EXISTS items(
    ID int NOT NULL AUTO_INCREMENT,
    itemID varchar(10),
    itemName varchar(40),
    description varchar(100),
    unitPrice int (10),
    CONSTRAINT Items_pk PRIMARY KEY(ID,itemID)
)ENGINE=INNODB



  --Stock Table
CREATE TABLE IF NOT EXISTS stock(
    ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    availableQty int(10),
    itemID varchar(10),
    CONSTRAINT Items_fk FOREIGN KEY (itemID) REFERENCES items(itemID)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)ENGINE=INNODB

您正在嘗試向不是 key 的內容添加外鍵約束。 注意約束:

CONSTRAINT Items_fk FOREIGN KEY (itemID) REFERENCES items(itemID)

並注意items的關鍵:

CONSTRAINT Items_pk PRIMARY KEY(ID,itemID)

itemID不是items的鍵。 您需要這兩個值才能引用鍵。 像這樣的東西:

CREATE TABLE IF NOT EXISTS stock(
    ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    availableQty int(10),
    itemID int,
    itemItemID varchar(10),
    CONSTRAINT Items_fk FOREIGN KEY (itemID, itemItemID) REFERENCES items(ID, itemID)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)ENGINE=INNODB

自然,您可能希望使用更好的命名。 目前這有點不直觀,因為對於任何給定的“項目”,您都有兩個稱為“ID”的東西。

暫無
暫無

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

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