【问题标题】:Adding Foreign Key Constraint While Using Composite Key Giving Me ERROR使用复合键时添加外键约束给我错误
【发布时间】:2012-06-19 09:18:29
【问题描述】:

我正在尝试创建三个表,但是我收到错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'REFERENCES personal_details(personID)
)'

上述错误是针对第三个表,即表hobbies_person

我正在创建如下表。

CREATE TABLE personal_details (
    personID   INT PRIMARY KEY,
    firstName  varchar(30),
    middleName varchar(30),
    lastName   varchar(30),
    age        INT,
    aboutMe    varchar(500)
);

CREATE TABLE hobbies (
    hobbID    INT PRIMARY KEY,
    hobbName  varchar(30)
);

CREATE TABLE hobbies_person (
    personID INT,
    hobbID   INT,
    PRIMARY KEY (personID, hobbID),
    FOREIGN KEY personID REFERENCES personal_details(personID)
);

我也试过

CREATE TABLE hobbies_person (
    personID INT,
    hobbID   INT,
    PRIMARY KEY (personID, hobbID),
    FOREIGN KEY personID REFERENCES personal_details(personID),
    FOREIGN KEY hobbID   REFERENCES hobbies(hobbID)
);

但还是同样的错误。

Link to check query

知道如何解决这个问题吗?

注意

在表hobbies_person中,我使用复合主键作为PRIMARY KEY (personID, hobbID),

【问题讨论】:

  • 如果 hbbID 是主键的一部分,为什么要将它定义为唯一的?没有意义
  • @a_horse_with_no_name :感谢您发现...我删除了...仍然是同样的错误...
  • 将“hobbID INT UNIQUE KEY”删除为 hobbID INT ,然后与 person_id 一起声明为主键

标签: mysql foreign-keys foreign-key-relationship composite-primary-key


【解决方案1】:

对于 FK 定义,您需要将列 personID 括在括号中:

CREATE TABLE hobbies_person (
    personID INT NOT NULL,
    hobbID   INT NOT NULL,
    PRIMARY KEY (personID, hobbID),
    FOREIGN KEY (personID) REFERENCES personal_details(personID)
);

【讨论】:

    【解决方案2】:

    您忘记了外键周围的()

    FOREIGN KEY (personID) REFERENCES personal_details(personID)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 2018-04-05
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多