Share |

ORA-02291: integrity constraint (%s.%s) violated - parent key not found

You are trying to insert or update a record, but some of the values provided were not found in the parent table.
For Example:
First create a parent table and a child table. The child table will contain a column PARENT_ID which references the PRIMARY KEY of the parent table:
SQL> create table parent(id number primary key);
Table created.
SQL> create table child(id number, parent_id number references parent(id));
Table created.
Now we are going to insert a record into the parent table:
SQL> insert into parent values(1);
1 row created.
Now we are going to insert a record into the child table, which references the newly inserted parent record (value:1):
SQL> insert into child values(1, 1);
1 row created.
Now we are going to insert a child record which references an unknown parent record (value: 2)
SQL> insert into child values(1, 2);
insert into child values(1, 2)
*
ERROR at line 1:
ORA-02291: integrity constraint (AUSER.SYS_C005576) violated - parent key not
found
As you can see, value 2 does not exist in the parent table and it generates an error. So either insert the missing records into the parent table, or provide a different value for the child record.

Using the constraint name provided with the error message, you can look up the columns affected:
select child.owner||'.'||child.table_name||'.'||child.column_name||' must exist in '||
parent.owner||'.'||parent.table_name||'.'||parent.column_name
from
all_cons_columns child
, all_cons_columns parent
, all_constraints c
where c.owner='AUSER'
and c.constraint_name='SYS_C005576'
and child.owner=c.owner
and child.constraint_name=c.constraint_name
and parent.owner=c.r_owner
and parent.constraint_name=c.r_constraint_name
and child.position=parent.position
/

AUSER.CHILD.PARENT_ID must exist in AUSER.PARENT.ID
 Was this information helpful?  Yes No
If it was not helpful, please take some time to explain why. This is not to ask questions, you can do so in the forum.

Welcome to our forum for Oracle error: ORA-02291 Add your own message



The following error has occurred:

ORA-02298: cannot validate (MIS_INFO.PROMO_FK_SCCOGTYPE) - parent keys not found


my querry is:

ALTER TABLE PROMO_SENT_COMMUNICATION ADD CONSTRAINT PROMO_FK_SCCOGTYPE
FOREIGN KEY (SUB_TYPE)
REFERENCES MIS_INFO.PROMO_SUBTYPE (SUB_TYPE) ;
You have values in your child table (PROMO_SENT_COMMUNICATION.SUB_TYPE) which do not exist in your parent table (MIS_INFO.PROMO_SUBTYPE.SUB_TYPE).

You can see what values do not exist and take corrective actions.

 
Hi,

I encountered this problem while running the script:
insert into spm_vendor_certifications
(id,owner_id,vendor_id,code,name,cert_score,cert_level,date_created,date_modified,created_by,modified_by)
Values
(spm_vendor_certifications_seq.nextval,1000,70107,'40582','Environmental Program',null,null,sysdate,sysdate,'administrator','administrator')
 
i have a table with live data already, i have downloaded a new stock room from inventory (JBA) and want tp upload it from acess, i upload then when i want to insert into the table i get the above error. my data is as follow source tabel where data is coming fromSQL> desc middlesabi;
Name Null? Type
------------------------------- -------- ----
AREA VARCHAR2(20)
CODE_ARTICLE VARCHAR2(12)
CODE_STORE VARCHAR2(5)
STOCK_AVAILABLE VARCHAR2(255)

then this one is the already existing table i am trying to insert into
SQL> desc stock_management;
Name Null? Type
------------------------------- -------- ----
USER_ACT VARCHAR2(40)
DATE_ACT DATE
LEVEL_TYPE NOT NULL VARCHAR2(2)
COMPANY NOT NULL VARCHAR2(2)
AREA NOT NULL VARCHAR2(2)
CODE_STORE NOT NULL VARCHAR2(4)
CODE_ARTICLE NOT NULL VARCHAR2(20)
TOTAL_STOCK NUMBER(15,3)
STOCK_AVAILABLE NUMBER(15,3)
STOCK_QUALITY_CONTROL NUMBER(15,3)
STOCK_BLOCKED NUMBER(15,3)
PENDING_SUPPLIER NUMBER(15,3)
PENDING_PURCH_ORDER NUMBER(15,3)
PENDING_TRANSFER_RECEIPT NUMBER(15,3)
PENDING_ISSUE NUMBER(15,3)
PENDING_REQUISITIONS NUMBER(15,3)
PENDING_TRANSFER_ISSUES NUMBER(15,3)
PENDING_RESERVATIONS NUMBER(15,3)
PRICE_MAP NUMBER(19,4)
ACCOUNT VARCHAR2(10)
IND_LOCKED VARCHAR2(2)

my error ;SQL> @C:\Rusape_load_04
26 /
DECLARE
*
ERROR at line 1:
ORA-02291: integrity constraint (UFA01007.FK2_STOCK_MANAGEMENT) violated - parent key not found
ORA-06512: at line 17.
The qursor i am using is
SET SERVEROUTPUT ON;
DECLARE
S UFA01007.MIDDLESABI@IPMSPROD%ROWTYPE;

CURSOR LOAD_STOCK IS
SELECT AREA, CODE_STORE, CODE_ARTICLE, STOCK_AVAILABLE
FROM UFA01007.MIDDLESABI@IPMSPROD;
-- WHERE AREA = 'WR'

BEGIN
DBMS_OUTPUT.ENABLE(10000000);
OPEN LOAD_STOCK;
LOOP
-- flp_filename:=UTL_FILE.fopen('/export/home/ufa01054/','stock_management','a');
FETCH LOAD_STOCK INTO S.AREA,S.CODE_STORE,S.CODE_ARTICLE,S.STOCK_AVAILABLE;
EXIT WHEN LOAD_STOCK%NOTFOUND;

INSERT INTO UFA01007.STOCK_MANAGEMENT@IPMSPROD
(LEVEL_TYPE, COMPANY, AREA, CODE_STORE, CODE_ARTICLE,
TOTAL_STOCK, STOCK_AVAILABLE)
VALUES
('04','00',S.AREA,S.CODE_STORE,S.CODE_ARTICLE,S.STOCK_AVAILABLE,S.STOCK_AVAILABLE);

END LOOP;

 
Hi,

I'm getting this error " ORA-02291: integrity constraint (UMBRELLA.LPS_GPR_FK) violated - parent key not found"

Any body would answer, I would appriciated..!
use following query to check which columns are affected

select child.owner||'.'||child.table_name||'.'||child.column_name||' must exist in '||
parent.owner||'.'||parent.table_name||'.'||parent.column_name
from
all_cons_columns child
, all_cons_columns parent
, all_constraints c
where c.owner='UMBRELLA'
and c.constraint_name='LPS_GPR_FK'
and child.owner=c.owner
and child.constraint_name=c.constraint_name
and parent.owner=c.r_owner
and parent.constraint_name=c.r_constraint_name
and child.position=parent.position
/

You are inserting data in a child column for which a parent record does not exist.
First insert a parent record
 

Got the same error when trying to update a 'child' table refering to its 'parent' . I understand the concept I just can't see where I'm going wrong.

Here's my tables:

create table supplier(
    suppno        number(6) not null unique,
    sname        varchar2(25) not null,
    sadd        varchar2(45) not null,
    pcode        char(8));


create table product(
    pcode        varchar2(6) not null unique,
    pdesc        varchar2(20) not null,
    pqtyin        number(5) not null,
    pmin        number(4) check (pmin > 0),
    pordqty        number(4) check (pordqty > 0),
    pprice        number(6,2) not null,    /* purchase price*/
    sprice        number(6,2) not null,    /* selling price*/
    suppno        references supplier(suppno));

heres my sql:

UPDATE user1.product SET suppno= 2234 WHERE pcode='CD4QPR';

heres my error:

SQL> UPDATE user1.product SET suppno= 2234 WHERE pcode='CD4QPR';
UPDATE user1.product SET suppno= 2234 WHERE pcode='CD4QPR'
*
ERROR at line 1:
ORA-02291: integrity constraint (USER1.SYS_C005436) violated - parent key not
found

Thanks in advance

 

And does following select return any value?

select * from suppliere where suppno=2234;

?

If not, then you will have to insert that record first.

 

OK i did that...the problem now is I need to update the parent and child table simulataneously..any ideas?

 

Generally it is a very bad idea to update the primary key of a table.

But you can look into deferable constraints if you really, really want to update the primary key together with the foreign key.

 

 

Thanks for the advice...so why is it a bad idea? what are the consequences ?

 

Hi ,

we are facing the "ora-02291 integrity constraint violated" error.

select child.owner||'.'||child.table_name||'.'||child.column_name||' must exist in '||
      parent.owner||'.'||parent.table_name||'.'||parent.column_name
from
  all_cons_columns child
, all_cons_columns parent
, all_constraints c
where c.owner='AUSER'
and c.constraint_name='SYS_C005576'
and child.owner=c.owner
and child.constraint_name=c.constraint_name
and parent.owner=c.r_owner
and parent.constraint_name=c.r_constraint_name
and child.position=parent.position

The above query is giving more than one row. 20 to 30 Forign keys.

 

Could you suggest please , how to resolve the issue.

 

Thanks.

Khalid.

you have to replace the value of the owner and constraint name with the values that were returned by your ORA-02291 error message.

This is just our test scenario, you will probably have different values

where c.owner='AUSER'
and c.constraint_name='SYS_C005576'

When you know the parent table name, you can either insert the missing parent record, or move the child record to an exception table, ...

 

 

 

I am executing the below query and the out put is more than one rows.

How do i proceced for this solution.

Here USDBUSR is my DB User.

select child.owner||'.'||child.table_name||'.'||child.column_name||' must exist in '||
      parent.owner||'.'||parent.table_name||'.'||parent.column_name
from
  all_cons_columns child
, all_cons_columns parent
, all_constraints c
where c.owner='USDBUSR'
and child.owner=c.owner
and child.constraint_name=c.constraint_name
and parent.owner=c.r_owner
and parent.constraint_name=c.r_constraint_name
and child.position=parent.position ;

And what about the (child) constraint name. If you do not include it, you will get all the foreign key constraints, but you are only interested in the one that gets violated.

Normally the constraint name is included in the error message. Can you post the complete error message you get?

 

 

1ST TABLE:-

create table departments

(department_id NUMBER PRIMARY KEY,

departent_name VARCHAR2(30));

2ND TABLE:-

CREATE TABLE employees

(EMPLOYEE_ID NUMBER PRIMARY KEY,

EMP_NAME VARCHAR2(20),

DEPT_ID NUMBER REFERENCES

departments(department_id),

MGR_ID NUMBER REFERENCES

employees(employee_id),

MGR_ID NUMBER REFERENCES

employees(employee_id),

JOB_ID VARCHAR2(15),

SALARY NUMBER);

Q:- WILE INSERTIING ROWS INTO TABLE ERROR (ORA-02291: integrity constraint violated - parent key not found) WHY? WHAT WILL BE THE SOLUTION PLZ HELP ME.

Please post the insert statements you are using.

You insert data into the employee table for which no master record exists. Either it is an unknown department, or an unknown manager

 

Hi ,

Am getting ORA-02291: integrity constraint (DB.C_DM_TABLEDATA_NODE_ID) violated - parent key not found error while executing my procedure. the prior error message to above is

#ORA-06512: at "DB.DM_SETNODEPROPERTY", line 42
#ORA-06512: at line 1

I can realize this would be a PK and FK relationships matter.

Please help me to resolve this issue. looking for your valuable suggestion

Thanks in advance.

Add your message

 Please provide your personal info 



 Please ask your message as briefly and clear as possible 

 Spam Protection 
Validation Code: g8oni4z6uc6q5hbr4


Ask Your Question

If you need more information about this particular error message, you can leave a forum message.

We are replying to this message whenever we have some spare time, so please do not consider this as a private 'solve my critical issue asap' service.

Should you need professional Oracle Assistance to make your project a success, please have a look at our consultancy services.


Spam Protection

In order to prevent automatic generation of messages, we are asking for a validation code. This code is unique and is generated every time a new message is asked.

If you do not enter the validation correctly, your message will not be recorded.


Forum Rules

Please be polite, do not USE ALL UPPERCASE, no insults, violance or any other threats.