多对多关系的 CREATE TABLE 上的 MySQL 错误

标签 mysql

我对简单的 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/

相关文章:

php - Cakephp 2 在多个部分获取数据的问题

php - 在不违反唯一约束的情况下交换 MySQL 中两行的值?

php - MYSQL:不是在 while 循环中使用 SELECT 语句——我有什么选择?

php - 如何在不删除旧数据的情况下更新数据库中的数据?

php 复制/同步/复制数据库内容

sql - 请帮助我理解为什么子查询会影响主查询对索引的使用

php - phpMyAdmin 和 php 中的不同结果

mysql - 表之间的 SQL 右连接

php - 当日期字段可以包含与日期不同的字符串时,获取按日期排序的 MySql 查询结果

MySQL group by desc -如何解释此sql : SELECT ts, avg_time FROM xx WHERE ip ="MAX"GROUP BY id DESC LIMIT 300?