ORA-02292: integrity constraint
WHEN-BUTTON-PRESSED Trigger got the following Exception Error:
Error:
ORA-02292: integrity constraint <constraint name> violated - child record found
Cause:
You tried to DELETE a record from a parent table (as referenced by a foreign key), but a record in the child table exists.
Action:
The options to resolve this Oracle error are:
------------------------------ How Could i handel this Error pls ?
Regards,
Abdetu..
Hello,Thanks Francois for reply
By the way,i am deleting roots in a a tree from the database..
DECLARE
pk INSP_EQUIPMENT_TYPE.EQUIPMENT_TYPE_D%TYPE;
BEGIN
IF Ftree.Get_Tree_Property('TREE_BLOCK_TEST.TREE13', Ftree.SELECTION_COUNT) >= '1' THEN
pk := ftree.get_tree_node_property(
'TREE_BLOCK_TEST.TREE13',
:system.trigger_node,
ftree.node_value);
DELETE FROM INSP_EQUIPMENT_TYPE
WHERE EQUIPMENT_TYPE_D = pk;
ELSE
Message('Please select a tree node for deletion.');
END IF;
EXCEPTION
WHEN OTHERS THEN
MESSAGE('OTHERS'||SQLCODE ||' ' ||SQLERRM );
MESSAGE('OTHERS'||SQLCODE ||' ' ||SQLERRM );
END;Regards,
Abdetu..
Similar Messages
-
ORA-02292: integrity constraint - foreign key delete
I am getting the above error message when attempting to delete an entry with a foreign key constraint. I have the standard delete button and the standard DML process for inset, update, delete, and a page validation conditioned on the delete button for EXISTS with the following code:
select 1 from dual
where (select count(*) from mdeccommitments
where producer = :P25_COREID
and receiver = :P25_COREID) = 0
and (select count(*) from mdecbriefcal
where primarytarget = :P25_COREID
and primaryowner = :P25_COREID) = 0
This code works in SQL directly. However, when I try to run this, I do not get the inline error associated with the validation routine, I just get the popup for the delete and then the very user-unfriendly Oracle error, almost as if the validation wasn't there. I tried removing the popup associated with the delete button, but it did not make a difference.
I want to provide a friendly intercept and return. I do not want to cascade the delete. What am I missing here?
Thanks.
GillianThanks Varad, by running the debug, I realized I misinterpreted what the validation did - I had used EXISTS instead of NOT EXISTS. Making this change resulted in the correct processing. Being a newbie, I wasn't sufficiently familiar with the debug option to think about it.
-
ORA-02291 Integrity Constraint exception - 1:1 in BPEL context
Hi,
I am using toplink inside a BPEL process (DB adapter).
I have a table PARTY with PK PARTY_ID and a table BILL_TO_CUSTOMER with PK BILL_TO_CUSTOMER_ID. They can be linked 1:1 using PARTY_ID = BILL_TO_CUSTOMER_ID. It works absolutely fine for update or select operations, but for inserts (using merge) NOT. I get an ORA-02291 error. From the log where I can see the tried SQL command the reason is obvious: He is trying to insert the BILL_TO_CUSTOMER before the PARTY and this does not work as there is a constraint.
How do I have to change my toplink_mapping XML to get this working?
Thank you very much, Best Regards,
Martin
<?xml version="1.0" encoding="UTF-8"?>
<toplink:object-persistence version="Oracle TopLink - 10g Release 3 (10.1.3.1.0) (Build 061004)" xmlns:opm="http://xmlns.oracle.com/ias/xsds/opm" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:toplink="http://xmlns.oracle.com/ias/xsds/toplink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<opm:name>BillToCustomerParty</opm:name>
<opm:class-mapping-descriptors>
<opm:class-mapping-descriptor xsi:type="toplink:relational-class-mapping-descriptor">
<opm:class>BillToCustomerParty.BillToCustomer</opm:class>
<opm:alias>BillToCustomer</opm:alias>
<opm:primary-key>
<opm:field table="BILL_TO_CUSTOMER" name="BILL_TO_CUSTOMER_PARTY_ID" xsi:type="opm:column"/>
</opm:primary-key>
<opm:events xsi:type="toplink:event-policy"/>
<opm:querying xsi:type="toplink:query-policy">
<opm:queries>
<opm:query name="findAllBillToCustomer" xsi:type="toplink:read-all-query">
<toplink:timeout>0</toplink:timeout>
<toplink:reference-class>BillToCustomerParty.BillToCustomer</toplink:reference-class>
<toplink:cache-usage>primary-key</toplink:cache-usage>
<toplink:lock-mode>none</toplink:lock-mode>
<toplink:container xsi:type="toplink:list-container-policy">
<toplink:collection-type>java.util.Vector</toplink:collection-type>
</toplink:container>
</opm:query>
</opm:queries>
<toplink:does-exist-query xsi:type="toplink:does-exist-query">
<toplink:existence-check>check-database</toplink:existence-check>
</toplink:does-exist-query>
</opm:querying>
<opm:attribute-mappings>
<opm:attribute-mapping xsi:type="toplink:one-to-many-mapping">
<opm:attribute-name>contactInformationCollection</opm:attribute-name>
<opm:reference-class>BillToCustomerParty.ContactInformation</opm:reference-class>
<opm:private-owned>true</opm:private-owned>
<opm:target-foreign-key>
<opm:field-reference>
<opm:source-field table="CONTACT_INFORMATION" name="PARTY_ID" xsi:type="opm:column"/>
<opm:target-field table="BILL_TO_CUSTOMER" name="BILL_TO_CUSTOMER_PARTY_ID" xsi:type="opm:column"/>
</opm:field-reference>
</opm:target-foreign-key>
<toplink:batch-reading>true</toplink:batch-reading>
<toplink:container xsi:type="toplink:container-policy">
<toplink:collection-type>oracle.toplink.indirection.IndirectList</toplink:collection-type>
</toplink:container>
<toplink:indirection xsi:type="toplink:transparent-collection-indirection-policy"/>
<toplink:selection-query xsi:type="toplink:read-all-query">
<toplink:reference-class>BillToCustomerParty.ContactInformation</toplink:reference-class>
<toplink:container xsi:type="toplink:container-policy">
<toplink:collection-type>oracle.toplink.indirection.IndirectList</toplink:collection-type>
</toplink:container>
</toplink:selection-query>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>billToCustomerPartyId</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="BILL_TO_CUSTOMER_PARTY_ID" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.Integer</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>externalBillToCustomerId</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="EXTERNAL_BILL_TO_CUSTOMER_ID" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>hashAlgorithmValue</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="HASH_ALGORITHM_VALUE" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>lastName</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="LAST_NAME" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>firstName</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="FIRST_NAME" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>middleName</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="MIDDLE_NAME" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>nameSuffix</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="NAME_SUFFIX" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>namePrefix</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="NAME_PREFIX" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>customerOrganizationName</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="CUSTOMER_ORGANIZATION_NAME" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressOrganizationName</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="ADDRESS_ORGANIZATION_NAME" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressDepartment</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="ADDRESS_DEPARTMENT" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressContactName</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="ADDRESS_CONTACT_NAME" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressBuilding</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="ADDRESS_BUILDING" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressStreet</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="ADDRESS_STREET" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressHouseNumber</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="ADDRESS_HOUSE_NUMBER" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressPoBox</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="ADDRESS_PO_BOX" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressLocality</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="ADDRESS_LOCALITY" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressPostalCode</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="ADDRESS_POSTAL_CODE" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressProvince</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="ADDRESS_PROVINCE" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressFormatted</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="ADDRESS_FORMATTED" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>genderType</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="GENDER_TYPE" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>dateOfBirth</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="DATE_OF_BIRTH" xsi:type="opm:column"/>
<opm:attribute-classification>java.sql.Timestamp</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>clientOrganizationPartyId</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="CLIENT_ORGANIZATION_PARTY_ID" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.Integer</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>phoneNumber</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="PHONE_NUMBER" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>faxNumber</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="FAX_NUMBER" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>mobileNumber</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="MOBILE_NUMBER" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>emailAddress</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="EMAIL_ADDRESS" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>lastUpdated</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="LAST_UPDATED" xsi:type="opm:column"/>
<opm:attribute-classification>java.sql.Timestamp</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressCountryId</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="ADDRESS_COUNTRY_ID" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.Integer</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>currentContactInformationId</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER" name="CURRENT_CONTACT_INFORMATION_ID" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.Integer</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:one-to-one-mapping">
<opm:attribute-name>billToCustomerGroup</opm:attribute-name>
<opm:reference-class>BillToCustomerParty.BillToCustomerGroup</opm:reference-class>
<opm:foreign-key>
<opm:field-reference>
<opm:source-field table="BILL_TO_CUSTOMER" name="BILL_TO_CUSTOMER_GROUP_ID" xsi:type="opm:column"/>
<opm:target-field table="BILL_TO_CUSTOMER_GROUP" name="BILL_TO_CUSTOMER_GROUP_ID" xsi:type="opm:column"/>
</opm:field-reference>
</opm:foreign-key>
<opm:foreign-key-fields>
<opm:field table="BILL_TO_CUSTOMER" name="BILL_TO_CUSTOMER_GROUP_ID" xsi:type="opm:column"/>
</opm:foreign-key-fields>
<toplink:batch-reading>true</toplink:batch-reading>
<toplink:selection-query xsi:type="toplink:read-object-query">
<toplink:reference-class>BillToCustomerParty.BillToCustomerGroup</toplink:reference-class>
</toplink:selection-query>
</opm:attribute-mapping>
</opm:attribute-mappings>
<toplink:descriptor-type>independent</toplink:descriptor-type>
<toplink:caching>
<toplink:cache-type>weak-reference</toplink:cache-type>
<toplink:always-refresh>true</toplink:always-refresh>
</toplink:caching>
<toplink:remote-caching>
<toplink:cache-type>weak-reference</toplink:cache-type>
</toplink:remote-caching>
<toplink:instantiation/>
<toplink:copying xsi:type="toplink:instantiation-copy-policy"/>
<toplink:change-policy xsi:type="toplink:deferred-detection-change-policy"/>
<toplink:tables>
<toplink:table name="BILL_TO_CUSTOMER"/>
</toplink:tables>
</opm:class-mapping-descriptor>
<opm:class-mapping-descriptor xsi:type="toplink:relational-class-mapping-descriptor">
<opm:class>BillToCustomerParty.BillToCustomerGroup</opm:class>
<opm:alias>BillToCustomerGroup</opm:alias>
<opm:primary-key>
<opm:field table="BILL_TO_CUSTOMER_GROUP" name="BILL_TO_CUSTOMER_GROUP_ID" xsi:type="opm:column"/>
</opm:primary-key>
<opm:events xsi:type="toplink:event-policy"/>
<opm:querying xsi:type="toplink:query-policy">
<opm:queries>
<opm:query name="findAllBillToCustomerGroup" xsi:type="toplink:read-all-query">
<toplink:timeout>0</toplink:timeout>
<toplink:reference-class>BillToCustomerParty.BillToCustomerGroup</toplink:reference-class>
<toplink:cache-usage>primary-key</toplink:cache-usage>
<toplink:lock-mode>none</toplink:lock-mode>
<toplink:container xsi:type="toplink:list-container-policy">
<toplink:collection-type>java.util.Vector</toplink:collection-type>
</toplink:container>
</opm:query>
</opm:queries>
<toplink:does-exist-query xsi:type="toplink:does-exist-query">
<toplink:existence-check>check-database</toplink:existence-check>
</toplink:does-exist-query>
</opm:querying>
<opm:attribute-mappings>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>billToCustomerGroupId</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER_GROUP" name="BILL_TO_CUSTOMER_GROUP_ID" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.Integer</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>clientOrganizationPartyId</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER_GROUP" name="CLIENT_ORGANIZATION_PARTY_ID" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.Integer</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>description</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER_GROUP" name="DESCRIPTION" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>code</opm:attribute-name>
<opm:field table="BILL_TO_CUSTOMER_GROUP" name="CODE" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
</opm:attribute-mappings>
<toplink:descriptor-type>independent</toplink:descriptor-type>
<toplink:caching>
<toplink:cache-type>weak-reference</toplink:cache-type>
<toplink:always-refresh>true</toplink:always-refresh>
</toplink:caching>
<toplink:remote-caching>
<toplink:cache-type>weak-reference</toplink:cache-type>
</toplink:remote-caching>
<toplink:instantiation/>
<toplink:copying xsi:type="toplink:instantiation-copy-policy"/>
<toplink:change-policy xsi:type="toplink:deferred-detection-change-policy"/>
<toplink:tables>
<toplink:table name="BILL_TO_CUSTOMER_GROUP"/>
</toplink:tables>
</opm:class-mapping-descriptor>
<opm:class-mapping-descriptor xsi:type="toplink:relational-class-mapping-descriptor">
<opm:class>BillToCustomerParty.ContactInformation</opm:class>
<opm:alias>ContactInformation</opm:alias>
<opm:primary-key>
<opm:field table="CONTACT_INFORMATION" name="CONTACT_INFORMATION_ID" xsi:type="opm:column"/>
</opm:primary-key>
<opm:events xsi:type="toplink:event-policy"/>
<opm:querying xsi:type="toplink:query-policy">
<opm:queries>
<opm:query name="findAllContactInformation" xsi:type="toplink:read-all-query">
<toplink:timeout>0</toplink:timeout>
<toplink:reference-class>BillToCustomerParty.ContactInformation</toplink:reference-class>
<toplink:cache-usage>primary-key</toplink:cache-usage>
<toplink:lock-mode>none</toplink:lock-mode>
<toplink:container xsi:type="toplink:list-container-policy">
<toplink:collection-type>java.util.Vector</toplink:collection-type>
</toplink:container>
</opm:query>
</opm:queries>
<toplink:does-exist-query xsi:type="toplink:does-exist-query">
<toplink:existence-check>check-database</toplink:existence-check>
</toplink:does-exist-query>
</opm:querying>
<opm:attribute-mappings>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>hashAlgorithmValue</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="HASH_ALGORITHM_VALUE" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>lastName</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="LAST_NAME" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>firstName</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="FIRST_NAME" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>middleName</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="MIDDLE_NAME" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>nameSuffix</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="NAME_SUFFIX" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>namePrefix</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="NAME_PREFIX" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>organizationName</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="ORGANIZATION_NAME" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressOrganizationName</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="ADDRESS_ORGANIZATION_NAME" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressDepartment</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="ADDRESS_DEPARTMENT" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressContactName</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="ADDRESS_CONTACT_NAME" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressBuilding</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="ADDRESS_BUILDING" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressStreet</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="ADDRESS_STREET" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressHouseNumber</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="ADDRESS_HOUSE_NUMBER" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressPoBox</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="ADDRESS_PO_BOX" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressLocality</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="ADDRESS_LOCALITY" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressPostalCode</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="ADDRESS_POSTAL_CODE" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressProvince</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="ADDRESS_PROVINCE" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressFormatted</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="ADDRESS_FORMATTED" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>contactInformationId</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="CONTACT_INFORMATION_ID" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.Integer</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>datetimeReceived</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="DATETIME_RECEIVED" xsi:type="opm:column"/>
<opm:attribute-classification>java.sql.Timestamp</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>dateOfBirth</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="DATE_OF_BIRTH" xsi:type="opm:column"/>
<opm:attribute-classification>java.sql.Timestamp</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>genderType</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="GENDER_TYPE" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>phoneNumber</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="PHONE_NUMBER" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>faxNumber</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="FAX_NUMBER" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>mobileNumber</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="MOBILE_NUMBER" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>emailAddress</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="EMAIL_ADDRESS" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>addressCountryId</opm:attribute-name>
<opm:field table="CONTACT_INFORMATION" name="ADDRESS_COUNTRY_ID" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.Integer</opm:attribute-classification>
</opm:attribute-mapping>
</opm:attribute-mappings>
<toplink:descriptor-type>independent</toplink:descriptor-type>
<toplink:caching>
<toplink:cache-type>weak-reference</toplink:cache-type>
<toplink:always-refresh>true</toplink:always-refresh>
</toplink:caching>
<toplink:remote-caching>
<toplink:cache-type>weak-reference</toplink:cache-type>
</toplink:remote-caching>
<toplink:instantiation/>
<toplink:copying xsi:type="toplink:instantiation-copy-policy"/>
<toplink:change-policy xsi:type="toplink:deferred-detection-change-policy"/>
<toplink:tables>
<toplink:table name="CONTACT_INFORMATION"/>
</toplink:tables>
</opm:class-mapping-descriptor>
<opm:class-mapping-descriptor xsi:type="toplink:relational-class-mapping-descriptor">
<opm:class>BillToCustomerParty.Party</opm:class>
<opm:alias>Party</opm:alias>
<opm:primary-key>
<opm:field table="PARTY" name="PARTY_ID" xsi:type="opm:column"/>
</opm:primary-key>
<opm:events xsi:type="toplink:event-policy"/>
<opm:querying xsi:type="toplink:query-policy">
<opm:queries>
<opm:query name="BillToCustomerPartySelect" xsi:type="toplink:read-all-query">
<opm:criteria operator="and" xsi:type="toplink:logic-expression">
<toplink:left operator="equal" xsi:type="toplink:relation-expression">
<toplink:left name="clientOrganizationPartyId" xsi:type="toplink:query-key-expression">
<toplink:base name="billToCustomer" xsi:type="toplink:query-key-expression">
<toplink:base xsi:type="toplink:base-expression"/>
</toplink:base>
</toplink:left>
<toplink:right xsi:type="toplink:parameter-expression">
<toplink:parameter name="clientOrganizationId" xsi:type="opm:column"/>
</toplink:right>
</toplink:left>
<toplink:right operator="equal" xsi:type="toplink:relation-expression">
<toplink:left name="externalBillToCustomerId" xsi:type="toplink:query-key-expression">
<toplink:base name="billToCustomer" xsi:type="toplink:query-key-expression">
<toplink:base xsi:type="toplink:base-expression"/>
</toplink:base>
</toplink:left>
<toplink:right xsi:type="toplink:parameter-expression">
<toplink:parameter name="externalBillToCustomerId" xsi:type="opm:column"/>
</toplink:right>
</toplink:right>
</opm:criteria>
<opm:arguments>
<opm:argument name="externalBillToCustomerId">
<opm:type>java.lang.String</opm:type>
</opm:argument>
<opm:argument name="clientOrganizationId">
<opm:type>java.lang.Integer</opm:type>
</opm:argument>
</opm:arguments>
<toplink:timeout>0</toplink:timeout>
<toplink:reference-class>BillToCustomerParty.Party</toplink:reference-class>
<toplink:cache-usage>primary-key</toplink:cache-usage>
<toplink:lock-mode>none</toplink:lock-mode>
<toplink:container xsi:type="toplink:list-container-policy">
<toplink:collection-type>java.util.Vector</toplink:collection-type>
</toplink:container>
</opm:query>
<opm:query name="findAllParty" xsi:type="toplink:read-all-query">
<toplink:timeout>0</toplink:timeout>
<toplink:reference-class>BillToCustomerParty.Party</toplink:reference-class>
<toplink:cache-usage>primary-key</toplink:cache-usage>
<toplink:lock-mode>none</toplink:lock-mode>
<toplink:container xsi:type="toplink:list-container-policy">
<toplink:collection-type>java.util.Vector</toplink:collection-type>
</toplink:container>
</opm:query>
</opm:queries>
<toplink:does-exist-query xsi:type="toplink:does-exist-query">
<toplink:existence-check>check-database</toplink:existence-check>
</toplink:does-exist-query>
</opm:querying>
<opm:attribute-mappings>
<opm:attribute-mapping xsi:type="toplink:one-to-one-mapping">
<opm:attribute-name>billToCustomer</opm:attribute-name>
<opm:reference-class>BillToCustomerParty.BillToCustomer</opm:reference-class>
<opm:foreign-key>
<opm:field-reference>
<opm:source-field table="PARTY" name="PARTY_ID" xsi:type="opm:column"/>
<opm:target-field table="BILL_TO_CUSTOMER" name="BILL_TO_CUSTOMER_PARTY_ID" xsi:type="opm:column"/>
</opm:field-reference>
</opm:foreign-key>
<opm:foreign-key-fields>
<opm:field table="PARTY" name="PARTY_ID" xsi:type="opm:column"/>
</opm:foreign-key-fields>
<toplink:batch-reading>true</toplink:batch-reading>
<toplink:indirection xsi:type="toplink:value-holder-indirection-policy"/>
<toplink:selection-query xsi:type="toplink:read-object-query">
<toplink:reference-class>BillToCustomerParty.BillToCustomer</toplink:reference-class>
</toplink:selection-query>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>partyId</opm:attribute-name>
<opm:read-only>true</opm:read-only>
<opm:field table="PARTY" name="PARTY_ID" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.Integer</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>partyTypeId</opm:attribute-name>
<opm:field table="PARTY" name="PARTY_TYPE_ID" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.Integer</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>activeInd</opm:attribute-name>
<opm:field table="PARTY" name="ACTIVE_IND" xsi:type="opm:column"/>
<opm:attribute-classification>java.lang.String</opm:attribute-classification>
</opm:attribute-mapping>
<opm:attribute-mapping xsi:type="toplink:direct-mapping">
<opm:attribute-name>createdDatetime</opm:attribute-name>
<opm:field table="PARTY" name="CREATED_DATETIME" xsi:type="opm:column"/>
<opm:attribute-classification>java.sql.Timestamp</opm:attribute-classification>
</opm:attribute-mapping>
</opm:attribute-mappings>
<toplink:descriptor-type>independent</toplink:descriptor-type>
<toplink:caching>
<toplink:cache-type>weak-reference</toplink:cache-type>
<toplink:always-refresh>true</toplink:always-refresh>
</toplink:caching>
<toplink:remote-caching>
<toplink:cache-type>weak-reference</toplink:cache-type>
</toplink:remote-caching>
<toplink:instantiation/>
<toplink:copying xsi:type="toplink:instantiation-copy-policy"/>
<toplink:change-policy xsi:type="toplink:deferred-detection-change-policy"/>
<toplink:tables>
<toplink:table name="PARTY"/>
</toplink:tables>
</opm:class-mapping-descriptor>
</opm:class-mapping-descriptors>
</toplink:object-persistence>I am replying to very old reported problem, since i struggled to get the right reason for this error.
In my database we had database constraint & associated trigger, On Insert the trigger gets Sequence. NextVal and inserts into PK column. This constraint trigger gets conflict with the Oracle Native Sequence Generator. I disabled the trigger and used my ESB native sequence (which also does sequence.nextVal) and it worked perfectly.
If the trigger is Must then make sure that there is If condition wherein it checks to set NextVal only if no input has been provided for PK. If input contains PK value then trigger should do nothing. -
Toplink Delete Integrity Constraint.
I have been beating my head against my key board for a few days on this.
Note: Names of packages/class names/DB info altered because I am paranoid.
Excerpts from my toplink log....
Deleted Objects:
Key: [588504] Identity Hash Code: 25872956 Object: ChildClass@18aca3c#588504
Key: [629458] Identity Hash Code: 1812473 Object: ChildClass@1ba7f9#629458
Key: [321343] Identity Hash Code: 11471177 Object: ParentClass@af0949#321343
Key: [588850] Identity Hash Code: 28648193 Object: ChildClass@1b52301#588850
Key: [321712] Identity Hash Code: 303169 Object: ParentClass@4a041#321712
DeleteObjectQuery(ParentClass@af0949#321343)
DeleteObjectQuery(ParentClass@4a041#321712)
DeleteObjectQuery(ChildClass@18aca3c#588504)
DeleteObjectQuery(ChildClass@1ba7f9#629458)
DeleteObjectQuery(ChildClass@1b52301#588850)
Somehow generates these delete statements..
DELETE FROM T_PARENT_CLASS WHERE (ID = 321712)
DELETE FROM T_CHILD_CLASS WHERE (ID = 588504)
DELETE FROM T_CHILD_CLASS WHERE (ID = 629458)
DELETE FROM T_CHILD_CLASS WHERE (ID = 588850)
End Batch Statements
Obviously this error is generated.
Exception [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.1.0) (Build 061214)): oracle.toplink.exceptions.DatabaseException
Internal Exception: java.sql.BatchUpdateException: error occurred during batching: ORA-02292: integrity constraint (FK_CHILD_PARENT) violated - child record found
Error Code: 17081
at oracle.toplink.exceptions.DatabaseException.sqlException(DatabaseException.java:282)
...ect
I think this has something to do with Toplink trying to order my deletes in a way they think they should be and ignoring the way I asked Toplink to delete the objects...
Any help with this would be greatly appreciated.The ChildClass class is not privately owned. Obviously the FK Constraints are set up.
The problem may be because that the ParentClass can share the same ChildClass. ChildClassesA does not contain the same objects in ChildClassesB.
unitOfWork.deleteAllObjects(parentClasses);
unitOfWork.deleteAllObjects(childClassesA);
unitOfWork.deleteAllObjects(childClassesB);
I have tried the line below from the 10.1.3 user guide with no success. getDescriptor() is deprecated so I am not sure why it is in the user guide. Is there a better way to do this? I would think that you would not have to do this at all if you have FK constraints set up and you specify that you want to delete all the parents BEFORE you even start deleting the child classes.
session.getDescriptor(ParentClass.class).addConstraintDependencies(ChildClass.class); -
Error Message for Integrity Constraint
Hi,
I have a table with called TMREF_MEDIATION_DATA_TREATMENT and one called TMREF_UOC_CRITERIA_MAPPING. There is a foreign key constraint and the TMREF_UOC_CRITERIA_MAPPING
table has the UID column from the other table in it. When I select delete form TMREF_MEDIATION_DATA_TREATMENT I get an error as expected:
ORA-02292: integrity constraint (MRS_DEV.TMREF_UOC_CRIT_TO_TREAT_FK2) violated - child record found
Error
Unable to process row of table TMREF_MEDIATION_DATA_TREATMENT.
OK
But is there any way that I can make this error more user friendly? I do not want it to delete if there is a child record - it must just warn the user.
Thanks.You could use this method:
http://apex.oracle.com/pls/otn/f?p=31517:185
which is in the page process. However, you could also create a validation, which will fire before the process is run and check the same.
Entering an invalid number will violate the constraint (the column is a number column) and this will then call the exception INVALID_NUMBER. You may also declare the constraint exception using
child_record_not_found EXCEPTION;
PRAGMA EXCEPTION_INIT (child_record_not_found, -02292);
Denes Kubicek
http://deneskubicek.blogspot.com/
http://www.opal-consulting.de/training
http://apex.oracle.com/pls/otn/f?p=31517:1
------------------------------------------------------------------- -
Integrity constraint child record found
TopLink Version: Oracle TopLink - 11g Release 1 (11.1.1.0.0) (Build 070323)
I may be going crazy here, but I keep getting an integrity constraint when I try to delete an object that has 1:M relationship (Resource 1:M Attribute):
Internal Exception: java.sql.SQLException: ORA-02292: integrity constraint (WEBCENTER.WP_RELATIONSHIP_RES_FK) violated - child record found
The child object attribute is set to "Private Owned", and there is an FK from the child table to the parent table in the database (this is where the integrity constraint violation is coming from).
I query for the Resource, register it in the unit of work, call UOW.deleteObject(resource), and then call UOW.commitAndResume(). TopLink is making a sql call to delete the Resource, but it does not first delete the privately owned Attributes which results in the FK violation.
It should delete the child records first, right?
In addtion to having the attribute set to "Private Owned", I also have set:
Batch Reading
Use Indirection
Transparent
Not sure if that makes a difference.Use a trigger. Example:
CREATE OR REPLACE TRIGGER update_parent_chilren
BEFORE UPDATE OF pkey_column ON parent_table
FOR EACH ROW
BEGIN
UPDATE child_table
SET fkey_column = :NEW.pkey_column
WHERE fkey_column = :OLD.pkey_column;
END update_parent_children;
null -
Hi,
When i tried to delete a record form the parent record got the below error.
Error starting at line 1 in command:
delete from DR_REVIEW where REVIEW_ID = 'THERM-R0016327'
Error report:
SQL Error: ORA-02292: integrity constraint (EDR.DR_REVIEW_USER_FK2) violated - child record found
+02292. 00000 - "integrity constraint (%s.%s) violated - child record found"+
*Cause: attempted to delete a parent key value that had a foreign+
dependency.
*Action: delete dependencies first then parent or disable constraint.+
Please provide me all the queries that can fix this issue ASAP.
Regards
RaghuOracle is telling you exactly what the problem is.
Cause: attempted to delete a parent key value that had a foreign dependency.
Which part about that would you like us to elaborate on, exactly? Keywords: Parent, child, dependency. There will be a foreign key constraint between the tables in question. Don't mess with it. That is not the path you're looking for \*waving my hand past your face\*
As to why you are trying to delete the parent but leave the dependent records, either you have a desire to totally screw up your database or you don't have any idea what you are doing. If you really want to delete that record then you first need to find all of its children and delete them. Whether that's a good idea or not I have no idea. Hopefully you do. I have my doubts.
So look at the schema and see what tables have foreign keys into the one that you are trying to delete a record from and delete the proper rows from those dependent tables (if you think that's wise) before trying to delete the record from the parent table.
Raghu_Msat wrote:
Hi,
When i tried to delete a record form the parent record got the below error.
Error starting at line 1 in command:
delete from DR_REVIEW where REVIEW_ID = 'THERM-R0016327'
Error report:
SQL Error: ORA-02292: integrity constraint (EDR.DR_REVIEW_USER_FK2) violated - child record found
+02292. 00000 - "integrity constraint (%s.%s) violated - child record found"+
*Cause: attempted to delete a parent key value that had a foreign+
dependency.
*Action: delete dependencies first then parent or disable constraint.+
Please provide me all the queries that can fix this issue ASAP.
Regards
Raghu -
Cannot Delete Content Areas without getting Integrity Constraint Issues
When I try to delete an unused Content Area by issuing the command:
Delete from wwsbr_sites$ where id = <value>;
I get the following error:
ORA-02292 - integrity constraint violated child record found.
How can I delete these entries and cascade through the what looks like maybe some 100 other child tables?We have done that...Deleted a Content Area through the Navigator...But the Content area still exists, there is nothing in there, but it is still there, it is like a ghost. And when you query the wwsbr_sites$ table
where ID for that Content Area is still there. -
I have a form with two data blocks. There is a foreign key relationship between the two tables. Let me give an example. If I have two tables with the following primary keys:
Folder (folder_id);
Message (message_id, folder_id);
I want to write a trigger that will update the key in Message:
BEGIN
UPDATE Message
SET folder_id = 8432
WHERE sender = :VARIABLE;
END;
If I try this, I get the ora 02292 FRM 40735 error message within the Forms runtime. I know that it has to do with the primary key integrity constraint, which is obvious. Is there a way around this?I treid the following:
CREATE TABLE FOLDER (FOLDER_ID NUMBER NOT NULL, FOLDER_NAME VARCHAR2(20));
ALTER TABLE FOLDER ADD CONSTRAINT FO_PK PRIMARY KEY (FOLDER_ID);
CREATE TABLE MESSAGE(MESSAGE_ID NUMBER NOT NULL, FOLDER_ID NUMBER NOT NULL, SENDER VARCHAR2(30));
ALTER TABLE MESSAGE ADD CONSTRAINT ME_PK PRIMARY KEY (MESSAGE_ID,FOLDER_ID);
ALTER TABLE MESSAGE ADD CONSTRAINT ME_FO_FK FOREIGN KEY (FOLDER_ID) REFERENCES FOLDER (FOLDER_ID);
INSERT INTO FOLDER (FOLDER_ID, FOLDER_NAME) VALUES (1, 'Folder 1');
INSERT INTO FOLDER (FOLDER_ID, FOLDER_NAME) VALUES (2, 'Folder 2');
INSERT INTO MESSAGE(MESSAGE_ID, FOLDER_ID, SENDER) VALUES (11, 1, 'Sender 1');
INSERT INTO MESSAGE(MESSAGE_ID, FOLDER_ID, SENDER) VALUES (22, 2, 'Sender 2');
UPDATE MESSAGE SET FOLDER_ID=1 WHERE SENDER='Sender 2';
UPDATE MESSAGE SET FOLDER_ID=3 WHERE SENDER='Sender 2';
ORA-02291: Integritäts-Constraint (HR.ME_FO_FK) verletzt - übergeordneter Schlüssel nicht gefunden
DELETE FOLDER WHERE FOLDER_ID=1;
ORA-02292: Integritäts-Constraint (HR.ME_FO_FK) verletzt - untergeordneter Datensatz gefundenSo did you try to call your update manually in SQL*PLUS. I should show you the violated constraint with that you can check where the error lies. -
How to find the table name on which integrity constraint not found
Hi All
How to acheive this
I have a lot of tables with lot of primary key - foreign key
relationship.
In plsql
when any inserts happen in the child table & the corresponding row is not present in the parent table, we get an exception
ORA-02291: integrity constraint (user1.ppk) violated - parent key not found
On this exception , in the exception block i want to trap teh name of the parent table on which the primary key for the particular child table was not there
Is it possible to retrieve the parent table in this way. I am looking for a generic plsql code block which can help to acheive this
Regardsscott@ORA92> SET SERVEROUTPUT ON
scott@ORA92> DECLARE
2 e_no_parent_key EXCEPTION;
3 PRAGMA EXCEPTION_INIT (e_no_parent_key, -2291);
4 v_fk_cons VARCHAR2 (61);
5 v_owner VARCHAR2 (30);
6 v_parent_table VARCHAR2 (61);
7 v_pk_cons VARCHAR2 (30);
8 v_parent_column VARCHAR2 (30);
9 BEGIN
10 INSERT INTO emp (empno, deptno) VALUES (99, 60);
11 EXCEPTION
12 WHEN e_no_parent_key THEN
13 -- extract schema.constraint_name from sqlerrm:
14 v_fk_cons:= SUBSTR (SQLERRM,
15 INSTR (SQLERRM, '(') + 1,
16 INSTR (SQLERRM, ')') - (INSTR (SQLERRM, '(') + 1));
17 DBMS_OUTPUT.PUT_LINE ('Foreign key constraint violated: ' || v_fk_cons);
18 -- extract parent schema.table and parent key:
19 SELECT owner, table_name, constraint_name
20 INTO v_owner, v_parent_table, v_pk_cons
21 FROM user_constraints
22 WHERE (owner, constraint_name) =
23 (SELECT r_owner, r_constraint_name
24 FROM user_constraints
25 WHERE owner || '.' || constraint_name = v_fk_cons);
26 DBMS_OUTPUT.PUT_LINE ('Parent table: ' || v_owner || '.' || v_parent_table);
27 DBMS_OUTPUT.PUT_LINE ('Parent key: ' || v_owner || '.' || v_pk_cons);
28 -- extract parent table columns:
29 FOR rec IN
30 (SELECT column_name
31 FROM user_cons_columns
32 WHERE owner = v_owner
33 AND table_name = v_parent_table
34 AND constraint_name = v_pk_cons)
35 LOOP
36 DBMS_OUTPUT.PUT_LINE
37 ('Parent table column: ' || rec.column_name);
38 END LOOP;
39 END;
40 /
Foreign key constraint violated: SCOTT.FK_DEPTNO
Parent table: SCOTT.DEPT
Parent key: SCOTT.PK_DEPT
Parent table column: DEPTNO
PL/SQL procedure successfully completed. -
Users getting APP-FND-01934:ora-00001 unique constraint
users getting APP-FND-01934:ora-00001 unique constraint(ENI.ENI_OLTP_ITEM_STAR_U3) violated in package ENI_ITEMS_STAR_PKG Procedure INsERT_ITEMS_IN_STAR on Master ITEM's in 11i EBS.
Please see these MOS Docs.
APP-FND-01934 ORA-00001 Error Occurs When Creating Items [ID 1072935.1]
APP-FND-01934 ORA-00001: Unique Constraint Error at Master Items [ID 465008.1]
ORA-02291: Integrity Constraint (GMI.IC_LOTS_MST_IC_ITEM_MST_B_FK) Violated [ID 302368.1]
Thanks,
Hussein -
Automated Solution for Integrity Constraints?
Here is the situation. I have a parent table with child rows in LIVE. A workspace is then created, and another child is added to one of the parent rows in live. Another workspace is then created, and the parent row for the first workspaces child is deleted. The user tries to merge the second workspace to LIVE, which fails with a ORA-20237 error (expected).
How do I in an automated fashion, determine what row(s) in what workspace(s) are causing the error workspace merge? This is on 10gR2.
Integrity constraint violations do not show up in the CONF views, so that doesn’t help. I need to be able to eliminate the conflicts in an automated fashion, providing notice to the owners of the workspaces that they need to go revise the parts that were forcefully removed. But to do that, I need to know how to locate the issues causing the problem so I can build a package to do this, hands off.
Example script:
SQL> create table test_parent (pk number not null, name varchar2(50),
2 CONSTRAINT test_parent_ndx PRIMARY KEY (pk));
Table created.
SQL> create table test_child (pk number not null, fk number, name varchar2(
2 CONSTRAINT test_child_ndx PRIMARY KEY (pk),
3 CONSTRAINT test_child_FK01
4 FOREIGN KEY (fk)
5 REFERENCES test_parent (pk)
6 on delete cascade);
Table created.
SQL> exec dbms_wm.enableversioning('test_parent,test_child');
PL/SQL procedure successfully completed.
SQL> insert into test_parent values (1, 'First item');
1 row created.
SQL> insert into test_parent values (2, 'Second item');
1 row created.
SQL> insert into test_child values (101, 1, 'References first item');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from test_parent;
PK NAME
1 First item
2 Second item
SQL> select * from test_child;
PK FK NAME
101 1 References first item
SQL> exec DBMS_WM.createworkspace('1', TRUE, 'None', TRUE );
PL/SQL procedure successfully completed.
SQL> exec DBMS_WM.gotoworkspace('1');
PL/SQL procedure successfully completed.
SQL> insert into test_child values (102, 1, 'References first item');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from test_parent;
PK NAME
1 First item
2 Second item
SQL> select * from test_child;
PK FK NAME
101 1 References first item
102 1 References first item
SQL> exec DBMS_WM.gotoworkspace('LIVE');
PL/SQL procedure successfully completed.
SQL> exec DBMS_WM.createworkspace('2', TRUE, 'None', TRUE );
PL/SQL procedure successfully completed.
SQL> exec DBMS_WM.gotoworkspace('2');
PL/SQL procedure successfully completed.
SQL> select * from test_parent;
PK NAME
1 First item
2 Second item
SQL> select * from test_child;
PK FK NAME
101 1 References first item
SQL> delete from test_parent where pk = 1;
1 row deleted.
SQL> commit;
Commit complete.
SQL> select * from test_parent;
PK NAME
2 Second item
SQL> select * from test_child;
no rows selected
SQL> exec DBMS_WM.gotoworkspace('LIVE');
PL/SQL procedure successfully completed.
SQL> exec DBMS_WM.mergeworkspace('2', FALSE, FALSE, FALSE );
BEGIN DBMS_WM.mergeworkspace('2', FALSE, FALSE, FALSE ); END;
ERROR at line 1:
ORA-20237: integrity constraint (CVC.TEST_CHILD_FK01) violated in workspace
LIVE or one of its descendants - child record found
ORA-06512: at "WMSYS.LT", line 6009
ORA-06512: at line 1BryanHi Amit,
The merge operation does result in the deletion of the row from both LIVE and the child workspace. However, this would cause the child table in the other (non-merged) workspace to have data without a corresponding parent row. We can not allow this, and so raise a referential integrity constraint violation. It is also not a conflict, as conflicts are always for rows with the same primary key, not for business conflicts or constraint violations. In the example, the inserted row in the child workspace was for a primary key that was unique within all workspaces, and so no conflict violation would be raised.
The reason it works for a non-CR workspace, is that the parent table row is still visible from the other workspace as it was not automatically deleted.
You can use the DIFF view(with SetDiffVersions) or the MW view(with SetMultiWorkspaces) to determine which rows were deleted from the parent table that you are merging. This information can then be used to find the other workspace/savepoint that is causing the violation and fix it. This could be done by removing the child row or inserting/updating the parent row prior to the other workspace being merged.
Ben -
Hi:
i am trying to insert records into two tables from a jsp page,
table A and table B. the column A1 is foregin key for table B.
whe i execute the add method it does the isert successfully for
table A but gives error for table B. this si the error i get:
"ORA-02291:Integrity constraint violeted: parent key not found"
should the insert statement in table A be committed before the
insert on table B is executed? fi so please tell me how to do
that. and if not please give me some suggestion. thank you.The following works for me (11gR2)...
create or replace type OTester
is object
id integer
Type created.
create
table Tester_Object
of OTester
primary key (id)
object identifier is primary key
Table created.
create
table Tester_Object_2
of OTester
primary key (id)
object identifier is primary key
Table created.
create
table Tester_Reference
tester ref OTester scope is Tester_Object
Table created.
create
index IN_Tester_Reference
on Tester_Reference
tester
Index created.
alter
table Tester_Reference
add (
foreign key (tester) references Tester_Object on delete cascade
Table altered.
insert
into Tester_Object
values (
OTester(1)
1 row created.
select o.*
from Tester_Object o
ID
1
1 row selected.
insert
into Tester_Reference
select ref(o)
from Tester_Object o
1 row created.
select r.*
from Tester_Reference r
TESTER
00004A038A0046876B2B6FC9014CDBAAC357A4FEDBA5D40000
001426010001000100290000000000090626002A00078401FE
0000000A02C102000000000000000000000000000000000000
0000
1 row selected.
delete
from Tester_Object
1 row deleted.
select o.*
from Tester_Object o
no rows selected.
select r.*
from Tester_Reference r
no rows selected.
insert
into Tester_Object_2
values (
OTester(2)
1 row created.
select o.*
from Tester_Object_2 o
ID
2
1 row selected.
insert
into Tester_Reference
select ref(o)
from Tester_Object_2 o
Error at line 136
ORA-22819: scope of input value does not correspond to the scope of the target
Please post code describing your own situation if this is not working for you.
Gerard -
I have a new Oracle Express 10G instance with Application Express 4.0 installed on it. I am trying to import an existing application that has been exported using Application Express. I get this error. How do I fix this?
SQL> connect apex_040000/xxxxxxxxx
Connected.
SQL> show user
USER is "APEX_040000"
SQL> @C:\apex_misc\f41362_app_export_092010.sql
APPLICATION 41362 - REQ Tracker
Set Credentials...
Check Compatibility...
API Last Extended:20100513
Your Current Version:20100513
This import is compatible with version: 20100513
COMPATIBLE (You should be able to run this import without issues.)
Set Application ID...
begin
ERROR at line 1:
ORA-02291: integrity constraint (APEX_040000.WWV_FLOWS_FK) violated - parent
key not found
ORA-06512: at "APEX_040000.WWV_FLOW_API", line 621
ORA-06512: at line 3
Disconnected from Oracle Database 10g Express Edition Release 10.2.0.1.0 - Produ
ctionHi,
as you say your Apex instance is new - does the workspace you exported the application from exist on your new apex instance? Probably not. You could try to set the appropriate one using the API like this:
exec wwv_flow_api.set_security_group_id(p_security_group_id => apex_util.find_security_group_id(p_workspace => 'XYZ'));This still requires that you already have created the workspace.
Is there a reason why you don't import the application with the workspace import?
-Udo -
Hi community,
I got an awful application import error.
ORA-20001: GET_BLOCK Error. ORA-20001: GET_STMT error. ORA-20001: Execution of the statement was unsuccessful. ORA-00001: unique constraint (FLOWS_030100.WWV_FLOW_FLOW_PK) violated &lt;pre&gt;--application/create_application &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;begin &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;wwv_flow_api.create_flow( &amp;lt;br&amp;gt; p_id =&amp;gt; 381, &amp;lt;br&amp;gt; p_display_id=&amp;gt; 381, &amp;lt;br&amp
Error installing application.What did I do?
Developed some in my test environment (APP ID 381) and made a normal export like 100 times before. When I tried to import that application in APP ID 380 the error occurred.
More information:
Both applications are in the same workspace.
APEX 3.1.2
Oracle XE
I tried a bit around:
Import in another workspace > same error
Restart OAS try to import> same error
Deletion of APP 380 and the try to import > same error
Import of an older version > successfully no errors
Try to make a new export of APP ID 381 > same error on import
Don't want to delete app 381! :O
Seems like something inside of the application/export is wrong.Hi Scott,
the query returns
select grantee from dba_role_privs where granted_role='APEX_ADMINISTRATOR_ROLE';
GRANTEE
SYSI tried to install the export in another apex database environment. New error occurred.
ORA-20001: GET_BLOCK Error.
ORA-20001: Execution of the statement was unsuccessful.
ORA-02291: integrity constraint
(FLOWS_030100.WWV_FLOW_SEC_SCHEMES_FK) violated - parent key not found <pre>begin
--application/shared_components/security/authorization/t_users
wwv_flow_api.create_security_scheme( p_id =&gt; 18109134549712168 + wwv_flow_api.g_id_offset, p_flow_id =&gt;
wwv_flow.g_flow_id, p_name=&gt;'T_USERS', p_scheme_type=&gt;'EXISTS', p_scheme=&gt;'select cI looked in the export file for the error part and found some interesting code. See:
prompt ...authorization schemes
begin
--application/shared_components/security/authorization/t_users
wwv_flow_api.create_security_scheme(
p_id => 18109134549712168 + wwv_flow_api.g_id_offset,
p_flow_id => wwv_flow.g_flow_id,
p_name=>'T_USERS',
p_scheme_type=>'EXISTS',
p_scheme=>'select count(*) from v_mze_appl '||chr(10)||
'where NAME like UPPER(:P101_USERNAME)'||chr(10)||
'and ROLE IN (''APEX_MZE_ADMIN'',''APEX_MZE_USERS'')'||chr(10)||
p_caching=>'BY_USER_BY_PAGE_VIEW',
p_error_message=>'Sie haben keine Berechtigungen für diese Seite');
--application/shared_components/security/authorization/t_auswertung
wwv_flow_api.create_security_scheme(
p_id => 42071873141249964 + wwv_flow_api.g_id_offset,
p_flow_id => wwv_flow.g_flow_id,
p_name=>'T_AUSWERTUNG',
p_scheme_type=>'EXISTS',
p_scheme=>'select count(*) from v_mze_appl '||chr(10)||
'where NAME like UPPER(:P101_USERNAME)'||chr(10)||
'and ROLE IN (''APEX_MZE_ADMIN'',''APEX_MZE_REPORT'')'||chr(10)||
p_caching=>'BY_USER_BY_PAGE_VIEW',
p_error_message=>'No rights for the page');
--application/shared_components/security/authorization/t_berechtigungen
wwv_flow_api.create_security_scheme(
p_id => 42072157819264447 + wwv_flow_api.g_id_offset,
p_flow_id => wwv_flow.g_flow_id,
p_name=>'T_BERECHTIGUNGEN',
p_scheme_type=>'EXISTS',
p_scheme=>'select count(*) from v_mze_appl '||chr(10)||
'where NAME like UPPER(:P101_USERNAME)'||chr(10)||
'and ROLE IN (''APEX_MZE_ADMIN'',''APEX_MZE_BERECHTIGUNGEN'')'||chr(10)||
p_caching=>'BY_USER_BY_PAGE_VIEW',
p_error_message=>'No rights for the page');
--application/shared_components/security/authorization/t_kategorien
wwv_flow_api.create_security_scheme(
p_id => 42072262321265732 + wwv_flow_api.g_id_offset,
p_flow_id => wwv_flow.g_flow_id,
p_name=>'T_KATEGORIEN',
p_scheme_type=>'EXISTS',
p_scheme=>'select count(*) from v_mze_appl '||chr(10)||
'where NAME like UPPER(:P101_USERNAME)'||chr(10)||
'and ROLE IN (''APEX_MZE_ADMIN'',''APEX_MZE_KATEGORIEN'')',
p_caching=>'BY_USER_BY_PAGE_VIEW',
p_error_message=>'No rights for the page');
end;
/Looks like the p_id for T_USERS is wrong. Exactly what the error tries to describe too. How could that happen and how can I solve that issue? I will try and save the t_users group again and will create a new export.
King regards,
Tobias
Edited by: Tobias Arnhold on Mar 2, 2009 8:23 AM
Maybe you are looking for
-
Videos and sms pictures.
I REALLY LOVE MY PHONE. BUT THERE A FEW THINGS I WOULD LIKE SEE HAPPEN. I HAD A BLACKBERRY PEARL WELL A FEW OF THEM AND ONE BLACKBERRY CURVE THATS WHY IM THREW WITH THEM. NOW THEY DO HAVE THE IPHONE BEAT ON ONE THING. AND THAT IS SENDING PICTURES. NO
-
Planning for Document Migration
Hi, i Need to do some planning for the last Shared Drives at a client that needs to be migrated to SharePoint. The Document Library limit in SP2010 is 30 000 documents per library. i Have got 290 881 Word documents that needs to be uploaded. In tota
-
Hi Guys, i wan't to install the sunone cobundle from the community edition on my Debian Linux System (Kernel 2.4.18) The installation stops after i execute the self-extraction file. What have i forgotten to install. There's no error description. Thx
-
PSE8 and PSE9 organizers use same catalog system?
Am currently using PSE8 on two systems but need to set it up on a third. Am considering whether to buy an add'l PSE8 license or a PSE9, but all of my images are stored on an external hard drive and are sometimes moved from computer to computer or sha
-
Summarised JIT call from ECC to SRM
Dear friends, I am creating a summarised JIT call in ECC 6.0. It is also creating an IDoc. I want to send this IDoc to SRM so as to make it available to my suppliers. Please, let me know the procedure. Thanks!! Shalini