无法在MySQL中为相关模式构建表

时间:2017-02-28 02:59:41

标签: mysql sql database

DROP Table if exists Users;
CREATE Table Users(UserID varchar(200) PRIMARY KEY,
Rating INTEGER NOT NULL,
Location varchar(200),
Country varchar(200)
);

DROP Table if exists Item;
CREATE Table Item(ItemID integer PRIMARY KEY,
name1 varchar(200) NOT NULL,
currently INTEGER NOT NULL,
buy_price INTEGER NOT NULL,
first_bid INTEGER NOT NULL,
started varchar(200) NOT NULL,
ends varchar(200) NOT NULL,
UserID varchar(200) NOT NULL,
Description varchar(2000),
FOREIGN KEY(UserID) REFERENCES Users
);

DROP Table if exists Categories;
CREATE Table Categories(ItemID INTEGER NOT NULL,
Category varchar(200) NOT NULL,
PRIMARY KEY(ItemID, Category),
FOREIGN KEY(ItemID) REFERENCES Item
);

DROP Table if exists Bids;
CREATE Table Bids(ItemID INTEGER NOT NULL, UserID varchar(200) NOT NULL,     Amount varchar(200) NOT NULL,
PRIMARY KEY(ItemID, UserID, Amount),
FOREIGN KEY(ItemID) REFERENCES Item,
FOREIGN KEY(UserID) REFERENCES Users
);

我是一个SQL菜鸟,我才开始学习它。我在构建此数据库时遇到问题。每次我使用mySQL运行它时都会收到错误,说它无法构建项目,类别或出价表,我认为这是因为我的外键以及我如何构建它们。我已经用这种方式绞尽脑汁几个小时了,我似乎无法得出正确的结论,为什么我不能建立我的桌子。

任何人都可以指出我正确的方向。谢谢!

1 个答案:

答案 0 :(得分:2)

您的references条款需要引用的列。例如:

CREATE Table Item (
    ItemID integer PRIMARY KEY,
    name1 varchar(200) NOT NULL,
    currently INTEGER NOT NULL,
    buy_price INTEGER NOT NULL,
    first_bid INTEGER NOT NULL,
    started varchar(200) NOT NULL,
    ends varchar(200) NOT NULL,
    UserID varchar(200) NOT NULL,
    Description varchar(2000),
    FOREIGN KEY(UserID) REFERENCES Users(UserID)
----------------------------------------^
);

您需要修复所有外键引用。