回答

收藏

Oracle复合主键/外键问题

技术问答 技术问答 569 人阅读 | 0 人回复 | 2023-09-14

我在oracle一个表中有一个复合主键。我想为第二个表中的一个表项创建一个外键,引用第一个表中的复合主键。ORA-02256。你对如何输入这个内容有什么想法吗?) ^# g/ l( j7 j6 S
CREATE TABLE groupspersonx (   personid number,  groupid number,  CONSTRAINT pk_persongroupid PRIMARY KEY(personid,groupid) );CREATE TABLE restrictedgroups (   groupid number,  name varchar2(50),  dateadded date,  since date,  notes varchar2(1024),  CONSTRAINT pk_groupid PRIMARY KEY(groupid),  CONSTRAINT fk_persongroup FOREIGN KEY(groupid) REFERENCES groupspersonx(personid,groupid) );;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4 U5 E! e* u3 n
    解决方案:                                                               
3 F$ P5 a! c+ Y                                                                因为这个错误FOREIGN
0 v& g) ]0 ?3 CKEY是一列,但是你试着提供两列作为父列。复合键不需要绑定,因为restrictedgroups它没有personid列…
- C3 _6 J2 A8 _7 O6 ~你也有倒退的关系-使用:
. W! E# p7 A% p2 PCREATE TABLE restrictedgroups (   groupid number,  name varchar2(50),  dateadded date,  since date,  notes varchar2(1024),  CONSTRAINT pk_groupid PRIMARY KEY(groupid));CREATE TABLE groupspersonx (   personid number,  groupid number,  CONSTRAINT pk_persongroupid PRIMARY KEY(personid,groupid), CONSTRAINT fk_persongroup FOREIGN KEY(groupid) REFERENCES restrictedgroups(groupid) );我将为personid在任何表中添加外键约束。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则