小编典典

Oracle复合主键/外键问题

sql

我在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) 
);

阅读 215

收藏
2021-04-17

共1个答案

小编典典

该错误是因为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) 
);

我将为personid要来自的任何表添加一个外键约束。

2021-04-17