我在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)
);
4 回答
该错误是因为FOREIGN KEY是一列,但是're trying to supply two columns as the parent. There'不需要绑定到复合键,因为
restrictedgroups
没有personid
列...你也有向后关系 - 使用:
我会为
personid
来自的任何表添加外键约束 .*引用列的数量等于外键列
无论何时要在列上创建复合主键或唯一约束,都不能在另一个表中提供引用 .
对于前
这里t1是父表,g1是子表 . 子表可以在一列中包含重复值 . 因此oracle将不允许该列表 .
也可以看看
因此,这里也是所有三列的唯一约束,即t1表中的a,b,c .
这就是为什么你不能在复合主键或复合唯一约束上创建外来的原因
你不能使用:
改变它:
这应该工作 .