带外键的复合主键
composite primary key with foreign key
我有一个数据库'STUDENT'。有 4 table 'INFO','STREAM','GRADE' & 'MARKS'.
- INFO 有 3 列 ID、NAME,STR_NO。
- STREAM 有 2 列 STR_NO、STR_NAME。
- GRADE 有 2 列 PERCENT,GRADE。
- MARKS 有 3 列 ID,STR_NO、TOTAL_MARK、FULL_MARK
我已经在信息 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。
我有一个数据库'STUDENT'。有 4 table 'INFO','STREAM','GRADE' & 'MARKS'.
- INFO 有 3 列 ID、NAME,STR_NO。
- STREAM 有 2 列 STR_NO、STR_NAME。
- GRADE 有 2 列 PERCENT,GRADE。
- MARKS 有 3 列 ID,STR_NO、TOTAL_MARK、FULL_MARK
我已经在信息 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。