带外键的复合主键

composite primary key with foreign key

我有一个数据库'STUDENT'。有 4 table 'INFO','STREAM','GRADE' & 'MARKS'.

我已经在信息 table 上声明了复合主键,即

PRIMARY KEY(ID, STR_NO)

但是当我在 STREAM 上声明一个外键时

FOREIGN KEY(STR_NO) REFERENCES INFO(ID,STR_NO)

报错

为什么以及如何解决这个问题

如果我理解你的表代表什么,看起来你的外键关系是倒过来的。看起来 STR_NO 应该是 STREAM 上的主键,INFO 上应该有一个外键约束,要求 INFO.STR_NO 在 [=15] 上有一个匹配值=] - 或者,在代码中

ALTER TABLE INFO
  ADD CONSTRAINT INFO_FK1
    FOREIGN KEY (STR_NO) REFERENCES STREAM(STR_NO);

祝你好运。

这样做:

ALTER TABLE STREAM ADD(ID NUMBER)

ALTER TABLE INFO
  ADD CONSTRAINT INFO_FK1
    FOREIGN KEY (ID, STR_NO) REFERENCES STREAM(ID, STR_NO);

由于 Table Info 有一个复合主键 ID, STR_NO,因此对它的任何引用也必须包括这两列。

更多详情,see here