我在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) );
该错误是因为FOREIGN KEY是一列,但是您尝试提供两列作为父列。不需要绑定到复合键,因为restrictedgroups它没有personid列…
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要来自的任何表添加一个外键约束。