Oralce 删除外键,后在添加外键,报错ORA-02298
在已有数据表中,删除外键后,再添加外键.
在运行以下语句的时候,报错如下:
ALTER TABLE SMS
ADD CONSTRAINT FK_PERSON_ID
FOREIGN KEY (PERSON_ID)
REFERENCES PERSON (PID);
Error at line 1
ORA-02298: 无法验证 (SMS.FK_PERSON_ID) - 未找到父项关键字
主要原因是:
在添加SMS的时候,默认是需要VALIDATE表中的已有数据的。
你要插入的表A里,有外键连接到另一个表B的主键,你在表A的外键列插入的值,在表B的主键列找不到就不能插入。主要看两表中的数据是否一致,从表中要关联外键的字段中的数据必须包含在主表相关字段的数据内。
处理的方法有:
1> 先不验证已有数据的SMS,加上参数NOVALIDATE.
SQL > ALTER TABLE SMS
ADD CONSTRAINT FK_PERSON_ID
FOREIGN KEY (PERSON_ID)
REFERENCES PERSON (PID)
NOVALIDATE;
2> 按照子表的外键查看一下不存在的副本记录,将不存在的父表记录补全