MYSQL 父子之间的外键关系

MYSQL Foreign Key Relationship between parent Child

我在 MYSQL 中创建了 2 个具有父子关系的 table。但是,外键关系失败,错误代码为 1215。MAIN_ROLE 可以有多个 SUB_ROLE 别名。 SUB_ROLE 有一个复合主键(ID,MAIN_ID,SEQ_NUM)。 MAIN_ROLE table 的主键是 SUB_ROLES 主键的一部分。 这是 table 和我的限制条件:

     create TABLE MAIN_ROLE(
      ID int NOT NULL AUTO_INCREMENT,
  MAIN_ID int NOT NULL,
  ASSIGNED_DATE datetime NULL,
  MAIN_ROLE_NM varchar(50) NOT NULL,
  PRIMARY KEY(ID,MAIN_ID) 
     );


    create TABLE SUB_ROLE(
     ID int NOT NULL,
 MAIN_ID int NOT NULL,
 SEQ_NUM decimal(15, 0) NOT NULL,
 SUB_ROLE_NM varchar(50) NOT NULL,
 PRIMARY KEY(ID,MAIN_ID,SEQ_NUM) ,
 CONSTRAINT SUB_ROLE_FK REFERENCES MAIN_ROLE(ID,MAIN_ID,SEQ_NUM)
    );

有人能指出我脚本中的外键有什么问题吗?请帮忙!

主要问题是您没有关注 mysql 的 foreign key syntax,并且您引用了 parent table 中不存在的字段:

  1. 您没有提供来自 child table
  2. 的字段列表
  3. SEQ_NUM 字段在主 table 中不存在,仅在子 table.
  4. 中存在

正确的外键定义如下所示:

CONSTRAINT SUB_ROLE_FK FOREIGN KEY (ID,MAIN_ID) REFERENCES MAIN_ROLE(ID,MAIN_ID)

但是,我真的不明白在主 table 中有一个自动递增 id 字段和一个 main_id 字段有什么意义。我会再看一遍。

这有效,CONSTRAINT SUB_ROLE_FK FOREIGN KEY (ID,MAIN_ID) REFERENCES MAIN_ROLE(ID,MAIN_ID)