Oracle复合主键/外键问题

Chr*_*her 12 sql oracle composite-key

我在oracle的1个表中有一个复合主键.我想为我的第二个表中的一个表项创建一个外键,该表引用第一个表中的复合主键.我收到错误ORA-02256.关于如何进入这个的任何想法?

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) 
); 
Run Code Online (Sandbox Code Playgroud)

OMG*_*ies 19

该错误是因为FOREIGN KEY是一列,但您尝试提供两列作为父列.没有必要绑定复合键,因为restrictedgroups它没有personid列...

你也有向后关系 - 使用:

CREATE 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) 
); 
Run Code Online (Sandbox Code Playgroud)

我会为personid将来自的表添加一个外键约束.