我对简单的 CREATE TABLE 查询有疑问。我在多对多关系中有两个表“‘resort’(带有 resortID 和 resortName)和‘season’(带有 resortID 和 resortName)。 我正在尝试使用以下两个查询之一创建连接表 resort_season:
CREATE TABLE resort_season (
resortID MEDIUMINT UNSIGNED NOT NULL,
seasonID MEDIUMINT UNSIGNED NOT NULL,
FOREIGN KEY (resortID) REFERENCES resort (resortID),
FOREIGN KEY (seasonID) REFERENCES season (seasonID),
PRIMARY KEY (resortID, seasonID) NOT NULL
);
CREATE TABLE resort_season (
resortID MEDIUMINT UNSIGNED NOT NULL FOREIGN KEY REFERENCES resort (resortID),
seasonID MEDIUMINT UNSIGNED NOT NULL FOREIGN KEY REFERENCES season (seasonID),
PRIMARY KEY (resortID, seasonID) NOT NULL
);
两个查询都给我一个错误,内容如下(在本例中是第二个查询):
“您的语法有误;请查看手册……在第 2 行的‘FOREIGN KEY REFERENCES resort (resortID), seasonID MEDIUMINT UNSIGNED NOT NULL F’附近使用正确的语法”
。
我做错了什么?这让我很头疼,因为我看不出错误的原因。
如果我简单地做
CREATE TABLE resort_season (
resortID MEDIUMINT UNSIGNED NOT NULL,
seasonID MEDIUMINT UNSIGNED NOT NULL,
PRIMARY KEY (resortID, seasonID) NOT NULL
);
然后它工作正常并创建了表。不过,我不确定这张表是否会有效地引用表格度假村和季节。
最佳答案
从主键定义中删除 NOT NULL -
CREATE TABLE resort_season(
resortID MEDIUMINT UNSIGNED NOT NULL,
seasonID MEDIUMINT UNSIGNED NOT NULL,
FOREIGN KEY (resortID) REFERENCES resort (resortID),
FOREIGN KEY (seasonID) REFERENCES season (seasonID),
PRIMARY KEY (resortID, seasonID)
);
关于多对多关系的 CREATE TABLE 上的 MySQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10086210/