使用novalidate选项创建复合引用键

时间:2015-03-14 09:14:57

标签: 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-02270: no matching unique or primary key for this column-list

1 个答案:

答案 0 :(得分:2)

  

ORA-02270:此列列表没有匹配的唯一键或主键

错误说明了一切。

<强>原因:

  

您尝试使用唯一键或主键引用表,但是   您列出的列与主键或主键不匹配   该表不存在密钥。

在你的情况下:

  

references EP_TENANT (PLATFORMSET_FK, GUID) ENABLE NOVALIDATE;

根据错误,EP_TENANT表上没有主键,您无法在SOURCE_SYSTEM上创建外键引用 EP_TENANT表。

您必须先将主键添加到EP_TENANT表中,如下所示:

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