您的位置:首页 > 数据库 > Oracle

oracle关于外键的使用

2015-11-23 11:54 381 查看
查找外键(根据表名)
select * from user_constraints t where t.r_constraint_name = 'PK_PUB_BANK'

在运行以下语句的时候,报错如下:

ALTER TABLE PN_POST
ADD CONSTRAINT POST_CLOB_FK
FOREIGN KEY (POST_BODY_ID)
REFERENCES PN_POST_BODY_CLOB (OBJECT_ID);
Error at line 1
ORA-02298: 无法验证 (PNET.POST_CLOB_FK) - 未找到父项关键字
[@more@]
主要原因是:

在添加CONSTRAINT的时候,默认是需要VALIDATE表中的已有数据的。
你要插入的表A里,有外键连接到另一个表B的主键,你在表A的外键列插入的值,在表B的主键列找不到就不能插入。主要看两表中的数据是否一致,从表中要关联外键的字段中的数据必须包含在主表相关字段的数据内。

处理的方法有:

1> 先不验证已有数据的CONSTRANT,加上参数NOVALIDATE.
SQL > ALTER TABLE PN_POST
ADD CONSTRAINT POST_CLOB_FK
FOREIGN KEY (POST_BODY_ID)
REFERENCES PN_POST_BODY_CLOB (OBJECT_ID)
NOVALIDATE;
2> 按照子表的外键查看一下不存在的副本记录,将不存在的父表记录补全
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: