Oracle 使用novalidate选项创建复合参照关键点

Oracle 使用novalidate选项创建复合参照关键点,oracle,oracle11g,constraints,Oracle,Oracle11g,Constraints,我试图使用复合键和novalidate键在表上添加一个引用约束,因为我确实有一些我还不想删除的垃圾数据。 下面是一个例子:- alter table SOURCE_SYSTEM add constraint FK_SOURCE_SYSTEM_TENANT foreign key (PLATFORMSET_GUID, TENANT_GUID) references EP_TENANT (PLATFORMSET_FK, GUID) ENABLE NOVALIDATE; 但是它说 ORA-022

我试图使用复合键和novalidate键在表上添加一个引用约束,因为我确实有一些我还不想删除的垃圾数据。 下面是一个例子:-

alter table SOURCE_SYSTEM add constraint FK_SOURCE_SYSTEM_TENANT foreign key (PLATFORMSET_GUID, TENANT_GUID)
  references EP_TENANT (PLATFORMSET_FK, GUID) ENABLE NOVALIDATE;
但是它说

ORA-02270: no matching unique or primary key for this column-list
ORA-02270:此列列表没有匹配的唯一键或主键

错误说明了一切

原因:

您试图使用唯一键或主键引用表,但 列出的列与主键或主键不匹配 此表的键不存在

就你而言:

引用EP_租户(平台集,GUID)启用NOVALIDATE

根据错误,在
EP_租户
表上没有主键,您无法在
SOURCE_系统
表上创建引用EP_租户表的外键

必须首先向EP_租户表添加主键,如下所示:

ALTER TABLE EP_TENANT 
 ADD CONSTRAINT PLATFORMSET_PK PRIMARY KEY (PLATFORMSET);

ORA-02270
引用表中必须有主键。看我的答案。@AthreyTR不客气。如果它对您有帮助,请将其标记为已回答。这也会帮助其他人。