为多对多关系创建表时出现MySQL错误
我对简单的CREATETABLE查询有一个问题。在多对多关系中,我有两张表“‘resort’(带RestorId和RestorName)和‘season’(带RestorId和RestorName)。 我试图通过以下两个查询中的一个来创建加入表resort_season:为多对多关系创建表时出现MySQL错误,mysql,Mysql,我对简单的CREATETABLE查询有一个问题。在多对多关系中,我有两张表“‘resort’(带RestorId和RestorName)和‘season’(带RestorId和RestorName)。 我试图通过以下两个查询中的一个来创建加入表resort_season: CREATE TABLE resort_season ( resortID MEDIUMINT UNSIGNED NOT NULL, seasonID MEDIUMINT UNSIGNED NOT NULL, FOREIGN
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行“
中使用“外键引用度假村(RestorId)、季节ID 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
);
然后它工作正常,表被创建。我不确定此表是否有效地引用了表resort and season。从主键定义中删除NOTNULL-
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)
);
这些是InnoDB表吗?我没有在查询中明确指定。这是导致此错误的原因吗?谢谢!因此,只有在度假区和季节表中定义主键时才应该指定NOTNULL内容?您在
度假区ID
和季节ID
表中指定为NOTNULL,所以相关字段(在度假酒店
和季节
表中)也不应为空。Promay键不允许空值。