--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)
您正在尝试将外键约束添加到不是键的内容中。请注意约束:
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”的东西。