2016-03-21 130 views
-2
--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 
+0

您需要創建一個字段才能將其聲明爲外鍵 –

+0

感謝您提交狀態報告。你有沒有真正的*問題*? – spencer7593

回答

0

您試圖將外鍵約束添加到不是密鑰。注意約束:

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」的東西。

+0

非常感謝:D – Tyronne

相關問題