Unique constraint fired when updating in MERGE statement.

Hi guys
I have an issue which I am unable to resolve. Would appreciate any help on this. The data setup and the scenario is as below.
SQL*Plus: Release 10.2.0.1.0 - Production on Wed May 4 11:46:02 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL>
create table table_1
(id number,
id_name varchar2(20));
Alter table table_1 add primary key(id);
create table table_2
(id number,
id_name varchar2(20));
insert into table_2 values (1, 'id_1');
insert into table_2 values (2, 'id_2');
insert into table_2 values (1, 'id_1_upd');
SQL> select * from table_1;
no rows selected
SQL> select * from table_2;
        ID ID_NAME
         1 id_1
         2 id_2
         1 id_1_upd
SQL>
SQL>  merge into table_1 target
  2   using (select id,
  3                 id_name
  4            from table_2) source
  5   on (source.id = target.id)
  6   when matched then
  7      update set target.id_name = source.id_name
  8   when not matched then
  9      insert(id,
10             id_name)
11      values(source.id,
12             source.id_name);
merge into table_1 target
ERROR at line 1:
ORA-00001: unique constraint (SYS_C00137508) violated
SQL> ed
Wrote file afiedt.buf
  1  select constraint_type, table_name, status
  2*   from user_constraints where constraint_name = 'SYS_C00137508'
SQL> /
C TABLE_NAME                     STATUS
P TABLE_1                        ENABLEDCan someone please help me in resolving this as the actual code that I am developing has the same setup and I am constantly getting this error. So long as the same record does not come up in the "source" table, MERGE does either an update or an insert.
But as soon a "duplicate" record comes up for updation, I am getting the unique constraint error.
Thanks
- K.B.

Dear,
ERROR at line 1:
ORA-00001: unique constraint (SYS_C00137508) violatedYou need to think about two things
(a) read consistency : what was the situation of table_1 when the maching clause has been initially evaluated ; there were 0 rows matching which means the merge operation will be all insert
(b) your matching clause has a problem : the join column must be unique in both tables otherwise the merge will be ambigous. You don't have a unique key on the source table
(c) think that the merge operation will never insert id =1 and then update id = 1 within the same operation. This will never happen
Hope this helps
Mohamed Houri

Similar Messages

  • Unique constraint violation while updating a non PK column

    Hi,
    I seem to have found this strange error.
    What I try to do is bulk fetch a cursor in some table arrays. with limit of 1000
    Then using a forall and a save exceptions at the end
    I update a table with the values inside one of the table arrays.
    The column I update is not part of a PK
    I catch the error message: ORA-24381
    by using PRAGMA exception_init(dml_errors, -24381);
    and later on :
    WHEN dml_errors THEN
    errors := SQL%BULK_EXCEPTIONS.COUNT;
    FOR i IN 1..sql%BULK_EXCEPTIONS.count LOOP
    lr_logging.parameters:= 'index = ' || sql%BULK_EXCEPTIONS(i).error_index || 'error = ' ||Sqlerrm(-sql%BULK_EXCEPTIONS(i).error_code) ;
    END LOOP;
    I insert these errors in another table. and i get 956 errors
    first one is :
    index = 3error = ORA-00001: unique constraint (.) violated
    last one is
    index = 1000error = ORA-00001: unique constraint (.) violated
    How can this be.Since i don't update in a PKcolumn.
    FULL CODE IS:
    PROCEDURE Update_corr_values( as_checkdate_from IN VARCHAR2,
    as_checkdate_until IN VARCHAR2,
    as_market IN VARCHAR2
    IS
    LS_MODULE_NAME CONSTANT VARCHAR2(30) := 'update_values';
    lr_logging recon_logging.logrec;
    CURSOR lc_update IS
    SELECT /*+ORDERED*/c.rowid,c.ralve_record_id,d.value,c.timestamp,f.value
    FROM rcx_allocated_values a,
    rcx_allocated_values b,
    meter_histories e,
    rcx_allocated_lp_value c,
    rcx_allocated_lp_value d,
    counter_values f
    WHERE a.slp_type NOT IN ('S89', 'S88', 'S10', 'S30') --AELP
    AND b.slp_type IN ('S89', 'S88') --residu
    AND a.valid_from >= to_date(as_checkdate_from,'DDMMYYYY HH24:MI')
    AND a.valid_to <= to_date(as_checkdate_until,'DDMMYYYY HH24:MI')
    AND a.market = as_market
    AND a.market = b.market
    AND a.ean_sup = b.ean_sup
    AND a.ean_br = b.ean_br
    AND a.ean_gos = b.ean_gos
    AND a.ean_dgo = b.ean_dgo
    AND a.direction = b.direction
    AND a.valid_from = b.valid_from
    AND a.valid_to = b.valid_to
    AND c.ralve_record_id = a.record_id
    AND d.ralve_record_id = b.record_id
    AND c.TIMESTAMP = d.TIMESTAMP
    AND e.ASSET_ID = 'KCF.SLP.' || a.SLP_TYPE
    --AND f.timestamp between to_date(gs_checkdate_from,'ddmmyyyy') and to_Date(as_checkdate_until,'ddmmyyyy')
    AND e.SEQ = f.MHY_SEQ
    AND f.TIMESTAMP =c.timestamp - 1/24
    ORDER BY c.rowid;
    TYPE t_value IS TABLE OF RCX_ALLOCATED_LP_VALUE.VALUE%TYPE;
    TYPE t_kcf IS TABLE OF COUNTER_VALUES.VALUE%TYPE;
    TYPE t_timestamp IS TABLE OF RCX_ALLOCATED_LP_VALUE.TIMESTAMP%TYPE;
    TYPE t_ralverecord_id IS TABLE OF RCX_ALLOCATED_LP_VALUE.RALVE_RECORD_ID%TYPE;
    TYPE t_row IS TABLE OF UROWID;
    ln_row t_row :=t_row();
    lt_value t_value := t_Value();
    lt_kcf t_kcf := t_kcf();
    lt_timestamp t_timestamp := t_timestamp();
    lt_ralve t_ralverecord_id := t_ralverecord_id();
    v_bulk NUMBER := 1000;
    val number;
    kcf number;
    ralve number;
    times date;
    dml_errors EXCEPTION;
    errors NUMBER;
    PRAGMA exception_init(dml_errors, -24381);
    BEGIN
    --setting arguments for the logging record
    lr_logging.module := LS_MODULE_NAME;
    lr_logging.context := 'INFLOW_ALL_VALUES_PARTS';
    lr_logging.logged_by := USER;
    lr_logging.parameters := 'Date time started: ' || TO_CHAR(sysdate,'DD/MM/YYYY HH24:MI');
    -- log debugs
    recon_logging.set_logging_env (TRUE, TRUE);
    recon_logging.log_event(lr_logging,'D');
    OPEN lc_update;
    LOOP
    FETCH lc_update BULK COLLECT INTO ln_row,lt_ralve,lt_value,lt_timestamp,lt_kcf LIMIT v_bulk;
    FORALL i IN NVL(lt_value.first,1)..NVL(lt_value.last,0) SAVE EXCEPTIONS
    UPDATE RCX_ALLOCATED_LP_VALUE
    SET VALUE = VALUE * lt_value(i) * lt_kcf(i)
    WHERE rowid =ln_row(i);
    COMMIT;
    lt_value.delete;
    lt_timestamp.delete;
    lt_ralve.delete;
    lt_kcf.delete;
    ln_row.delete;
    EXIT WHEN lc_update%NOTFOUND;
    END LOOP;
    CLOSE lc_update;
    recon_logging.log_event(lr_logging,'D');
    lr_logging.parameters := 'Date time ended: ' || TO_CHAR(sysdate,'DD/MM/YYYY HH24:MI');
    recon_logging.log_event(lr_logging,'D');
    --to be sure
    COMMIT;
    EXCEPTION
    WHEN dml_errors THEN
    recon_logging.set_logging_env(TRUE,TRUE);
    lr_logging.module := 'updatevalues';
    lr_logging.context := 'exception';
    lr_logging.logged_by := USER;
    lr_logging.parameters := 'in dml_errors';
    recon_logging.log_event(lr_logging);
    errors := SQL%BULK_EXCEPTIONS.COUNT;
    lr_logging.parameters:=errors;
    recon_logging.log_event(lr_logging);
    lr_logging.parameters :=('Number of errors is ' || errors);
    --DBMS_OUTPUT.PUT_LINE('Number of errors is ' || errors);
    FOR i IN 1..sql%BULK_EXCEPTIONS.count LOOP
    lr_logging.parameters:= 'index = ' || sql%BULK_EXCEPTIONS(i).error_index || 'error = ' ||Sqlerrm(-sql%BULK_EXCEPTIONS(i).error_code) ;
    recon_logging.log_event(lr_logging);
    END LOOP;
    --recon_logging.set_logging_env(TRUE,TRUE);
    --recon_logging.log_event(lr_logging);
    commit;
    WHEN OTHERS THEN
    lr_logging.module := 'updatevalues';
    lr_logging.context := 'exception';
    lr_logging.logged_by := USER;
    recon_logging.set_logging_env(TRUE,TRUE);
    lr_logging.parameters := 'in others error=' || SQLERRM;
    recon_logging.log_event(lr_logging);
    commit;--to look which is truly the last (else only commit after 1000)
    --raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
    END Update_corr_values;

    Hi,
    No I didn't update a unique constraint.
    But I found out that there is a trigger that causes the unique constraint while updating in the table.
    Silly mistake.Didn't know there was a trigger there.
    Thx anyway.
    Greetz

  • Primary key constraint firing when there's no need

    Hi All,
    I've got a very weird problem.
    I've written a PL/SQL procedure to insert addresses into a tabel. The adresses are assigned an unique number by means of a sequence. This unique number is the primary key of the table and has to be unique.
    The following thing occurs: The primary key constraint fires whenever i try to insert a record and i can't figure out why.
    I use the following code
    PROCEDURE mk_adr(klant NUMBER, receiver NUMBER) IS
    oidtje NUMBER DEFAULT 0;
    BEGIN
    BEGIN
    SELECT lea_adr_seq.NEXTVAL INTO oidtje
    FROM dual
    INSERT INTO lea_adr (
    oid, object, streetname,
    housenumber, housealpha, ponumber,
    postcode, cityname, locationdesc,
    province, kind, country_id,
    relation_id, offerrec_id,
    h_trans_van,
    h_geldig_van,
    h_gebruiker
    SELECT oidtje, oidtje, streetname,
    housenumber, housealpha, ponumber,
    postcode, cityname, locationdesc,
    province, kind, country_id,
    null, receiver,
    To_Date('01-01-2000'),
    To_Date('01-01-2000'),
    'conv'
    FROM lea_adr
    WHERE relation_id = klant
    EXCEPTION
    WHEN Others THEN
    conv_algemeen.debugMessage('mk_adr :: '||SQLERRM);
    END;
    END;
    as you can see the very first thing i'm doing is selecting a new unique number into oidtje from the sequence which provides the numbers. Then i use it to insert the record. The insert fails with the primary key constraint firing saying that oid is not filled with an unique number.
    When i do "select max(oid) from lea_adr;" I get a number lower than the number the i get when doing "select lea_adr_seq.nextval from dual;"
    So am i overseeing something or is something very obvious going wrong ?
    Patrick

    Write your procedure like the following and it will work.
    PROCEDURE mk_adr(klant NUMBER, receiver NUMBER) IS
    BEGIN
    INSERT INTO lea_adr (
    oid, object, streetname,
    housenumber, housealpha, ponumber,
    postcode, cityname, locationdesc,
    province, kind, country_id,
    relation_id, offerrec_id,
    h_trans_van,
    h_geldig_van,
    h_gebruiker
    SELECT lea_adr_seq.NEXTVAL, lea_adr_seq.NEXTVAL, streetname,
    housenumber, housealpha, ponumber,
    postcode, cityname, locationdesc,
    province, kind, country_id,
    null, receiver,
    To_Date('01-01-2000'),
    To_Date('01-01-2000'),
    'conv'
    FROM lea_adr
    WHERE relation_id = klant
    EXCEPTION
    WHEN Others THEN
    conv_algemeen.debugMessage('mk_adr :: '||SQLERRM);
    END;
    Using the lea_adr_seq.NEXTVAL more then once in the SAME select will return the same value for both calls.
    SQL> create sequence test
    2 ;
    Sequence created.
    SQL> select test.nextval,test.nextval from dual;
    NEXTVAL NEXTVAL
    1 1
    SQL>

  • Programatically detecting uniqueness constraint violations when using Direct Path API

    I'm developing an application that bulk loads data into the
    database using the DirectPath API.
    According to the DirectPath API documentation uniqueness
    constraints must be disabled prior to importing data using the
    DirectPath API, then the constraints must be re-enabled.
    If duplicate data is inserted when the constraints are disabled,
    enabling the constraints results in the constraint's underlying
    index being left in an "unusable" state.
    The SQL*Loader tool (which also uses the DirectPath API) somehow
    manages to deal with this.
    It can successfully detect which data causes the constraint
    violation, and politely writes the offending data to a bad rows
    file.
    If SQL*Loader also uses the DirectPath API - how does it detect
    which data causes a constraint violation.
    The mere fact that SQL*Loader can do this in DirectPath mode,
    shows that it is possible.
    Any ideas how to detect which data causes a constraint violation
    when using the DirectPath API ?
    - Andy

    I'm developing an application that bulk loads data into the
    database using the DirectPath API.
    According to the DirectPath API documentation uniqueness
    constraints must be disabled prior to importing data using the
    DirectPath API, then the constraints must be re-enabled.
    If duplicate data is inserted when the constraints are disabled,
    enabling the constraints results in the constraint's underlying
    index being left in an "unusable" state.
    The SQL*Loader tool (which also uses the DirectPath API) somehow
    manages to deal with this.
    It can successfully detect which data causes the constraint
    violation, and politely writes the offending data to a bad rows
    file.
    If SQL*Loader also uses the DirectPath API - how does it detect
    which data causes a constraint violation.
    The mere fact that SQL*Loader can do this in DirectPath mode,
    shows that it is possible.
    Any ideas how to detect which data causes a constraint violation
    when using the DirectPath API ?
    - Andy

  • ORA-00001 - unique constraint violation when upgrading 10g EUL

    Hi,
    I am trying to upgrade my Discoverer 4i to Discoverer 10g.
    When I log into 10g, it prompts me to upgrade the EUL. After making the right back up of my 4i EUL, I continue with the upgrade.
    During the upgrade, I am hit with this error:
    Database error: ORA-00001 unique constraint (EUL_HRMS.EUL5_FOL_UK_1) violated.
    I understand that this happens when user tries to insert an already existing value into a column defined as unique. However, I am not sure on how to resolve it.
    Can anyone please advice.
    Thanks in advance!
    Regards,
    Harpreet Sidhu

    Hi Rod,
    I've run the queries and these are the results. Each query returned one row.
    1. SELECT FROM EUL_HRMS.EUL5_DOC_FOLDERS*
    FOL_ID     100057
    FOL_NAME     ROOT
    FOL_DEVELOPER_KEY     ROOT
    FOL_DESCRIPTION     
    FOL_EU_ID     100000
    FOL_PARENT_ID     
    FOL_USER_PROP2     
    FOL_USER_PROP1     
    FOL_ELEMENT_STATE     0
    FOL_CREATED_BY     EUL_HRMS
    FOL_CREATED_DATE     19-Jun-09
    FOL_UPDATED_BY     EUL_HRMS
    FOL_UPDATED_DATE     19-Jun-09
    NOTM     0
    2. SELECT EU_ID, EU_SECURITY_MODEL, EU_USE_PUB_PRIVS, EU_ROLE_FLAG
    FROM EUL_HRMS.EUL5_EUL_USERS
    WHERE EU_USERNAME = 'PUBLIC'
    EU_ID     3000
    EU_SECURITY_MODEL     0
    EU_USE_PUB_PRIVS     1
    EU_ROLE_FLAG     0
    Thanks!

  • Getting unique constraint error when creating a logical schema

    Hi All,,
    I'm creating the logical schema and i'm getting the following error.
    to give you more clear picture on this....
    we are having the application called "DTA" in planning and i was able to set up as a data server with the same name both in essbase and planning....we got a naming issue and deleted the dataserver from essbase and trying to creat it back and i'm having the issue..
    FYI...i was able to create data server for the other application successful both in planning and essbase without any issues...
    java.sql.SQLException: ORA-00001: unique constraint (HYPODIMD.AK_LSCHEMA) violated
    java.sql.SQLException: ORA-00001: unique constraint (HYPODIMD.AK_LSCHEMA) violated
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:316)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:282)
         at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:639)
         at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:185)
         at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStatement.java:633)
         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1086)
         at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2984)
         at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3057)
         at com.sunopsis.sql.SnpsQuery.executeUpdate(SnpsQuery.java)
         at com.sunopsis.dwg.dbobj.generated.GeneratedSnpLschema.insertAction(GeneratedSnpLschema.java)
         at com.sunopsis.dwg.DwgObject.insert(DwgObject.java)
         at com.sunopsis.dwg.DwgObject.insert(DwgObject.java)
         at com.sunopsis.graphical.frame.b.jt.cy(jt.java)
         at com.sunopsis.graphical.frame.bp.cB(bp.java)
         at com.sunopsis.graphical.frame.bp.bG(bp.java)
         at com.sunopsis.graphical.frame.b.jt.bG(jt.java)
         at com.sunopsis.graphical.frame.bo.q(bo.java)
         at com.sunopsis.graphical.frame.bo.bu(bo.java)
         at com.sunopsis.graphical.frame.bo.y(bo.java)
         at com.sunopsis.graphical.frame.bo.b(bo.java)
         at com.sunopsis.graphical.frame.w.actionPerformed(w.java)
         at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
         at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Unknown Source)
         at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
         at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
         at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
         at java.awt.Component.processMouseEvent(Unknown Source)
         at java.awt.Component.processEvent(Unknown Source)
         at java.awt.Container.processEvent(Unknown Source)
         at java.awt.Component.dispatchEventImpl(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Window.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.EventQueue.dispatchEvent(Unknown Source)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.run(Unknown Source)
    Plz advise..
    Thanks in advance

    I don't have two logical schema's with one name.
    In general i had one more planning app called DFR. for this i created a physical/logical schema as planning.dfr for planning.
    And for essbase essbase.dfr and this is working well wn i'm trying to create for DTA it is giving the error which i mentioned.
    Plz Let me know your thoughts
    -K-

  • Can we use where clause in Update on Merge statement?

    Hi All,
    I tried to execute the following Merge Query:
    When this query is executed without ‘Where clause’ in Update statement its working fine. When executed with ‘Where clause’ it throwing the following error:
    ORA-00905: missing keyword.
    Following is the sample query which I tried to execute:
    MERGE INTO TABLE_NAME
    USING (SELECT COLUMN FORM TABLES)
    ON (CONDITION)
    WHEN MATCHED THEN
    UPDATE SET
         COLUMN UPATES
    WHERE CONDITION -- Can we use where clause here?
    WHEN NOT MATCHED THEN
    INSERT
    INSERT VALUES;
    Can some one help on this?
    Thanks in advance.
    Darius

    Yes:
    SQL> drop table emp1;
    Table dropped.
    SQL> create table emp1 as select * from emp where deptno = 30;
    Table created.
    SQL> update emp1 set sal = sal*2;
    6 rows updated.
    SQL> commit;
    Commit complete.
    SQL> select ename,sal from emp1;
    ENAME             SAL
    ALLEN            3200
    WARD             2500
    MARTIN           2500
    BLAKE            5700
    TURNER           3000
    JAMES            1900
    6 rows selected.
    SQL> MERGE INTO emp1
      2  USING(select * from emp) emp
      3  ON (emp1.empno = emp.empno)
      4  WHEN MATCHED THEN
      5  UPDATE SET sal = emp.sal WHERE ename = 'TURNER'
      6  WHEN NOT MATCHED THEN
      7  INSERT(ename,sal) VALUES(emp.ename,emp.sal);
    9 rows merged.
    SQL> select ename,sal from emp1;
    ENAME             SAL
    ALLEN            3200
    WARD             2500
    MARTIN           2500
    BLAKE            5700
    TURNER 1500
    JAMES            1900
    SMITH             800
    JONES            2975
    CLARK            2450
    SCOTT            3000
    KING             5000
    ENAME             SAL
    ADAMS            1100
    FORD             3000
    MILLER           1300
    14 rows selected.
    SQL> SY.

  • AltKey Uniqueness Rule firing when it shouldn't

    Hello,
    I am using JDev 11.1.1.4.0.
    I have a 'Name' field that has Altkey for uniqueness rule. It works fine. In fact, it works too well that the rule fires when it shouldn't.
    So I was looking for an example to execute the validation conditionally, for my case only when 'Save'.
    Any suggestion/comment appreciated.
    Thank you
    Bones Jones

    No reason in particular, when I created the class, FlashBuilder put it in there (I'm using Flash Pro CS5 + Flash Builder 4). I read that it calls it by default when the class is constructed, so having it in or out didn't really matter. I did comment it out with no luck, but I ended up shifting around the timeline quite a bit today and the problem has gone away. It seemed to only do it when it was in the first frame.
    Thanks for your help, I'm going to investigate it further when I have time just for reference, I'll post anything I find here.
    -Nick

  • Uniqueness Constraint Violation When Generating Web Service Proxy

    JDeveloper 10.1.3.2 & 10.1.3.3
    I'm receiving an error message that a class has already been gerated when attempting to use JDeveloper to create the stubs for a web service from the wsdl & xsd's. The problem seems to center on the declaration for the faults in one xsd file:
    =========================
         <!--Faults-->
         <xs:element name="userLookupFault" type="tns:testFaultType"/>
         <xs:element name="testFault" type="tns:testFaultType">
              <xs:annotation>
                   <xs:documentation>testFault should be the 'default' fault type for faults that are not categorized
                        into more specific faults.</xs:documentation>
              </xs:annotation>
         </xs:element>
         <xs:complexType name="testFaultType">
              <xs:sequence>
                   <xs:element name="message" type="xs:string" nillable="true" minOccurs="0" maxOccurs="1"/>
                   <xs:element name="timestamp" type="xs:dateTime" nillable="false" minOccurs="1" maxOccurs="1"/>
              </xs:sequence>
         </xs:complexType>
    =========================
    Apparently because the userLookupFault and testFault elements are both of type testFaultType JDeveloper attempts to create the testFaultType class twice. I've been able to get the proxy files to generate if I change one of the elements to a different type:
    =========================
         <xs:element name="userLookupFault" type="tns:userLookupFaultType"/>
         <xs:complexType name="userLookupFaultType">
              <xs:sequence>
                   <xs:element name="message" type="xs:string" nillable="true" minOccurs="0" maxOccurs="1"/>
                   <xs:element name="timestamp" type="xs:dateTime" nillable="false" minOccurs="1" maxOccurs="1"/>
              </xs:sequence>
         </xs:complexType>
         <xs:element name="testFault" type="tns:testFaultType" />
         <xs:complexType name="testFaultType">
              <xs:sequence>
                   <xs:element name="message" type="xs:string" nillable="true" minOccurs="0" maxOccurs="1"/>
                   <xs:element name="timestamp" type="xs:dateTime" nillable="false" minOccurs="1" maxOccurs="1"/>
              </xs:sequence>
         </xs:complexType>
    =========================
    Upon review I see that the wsdl files that fail to generate attempt to use both userLookupFault and testFault but those that use only one generate successfully.
    Has anyone else experienced this issue?
    Is there a reason two faults cannot be of the same type?

    WSDLs were supplied by third party managing the web service I am attempting to generate the proxies for. I'm unsure of the method used to create the WSDL files.

  • "VLD-2780: Unable to generate Merge statement".

    Folks,
    I am trying to validate my mapping before deployment but I am getting the following error: "VLD-2780: Unable to generate Merge statement".
    - I am mapping 5 tables from my source to one table in my target by using a joiner.The primary key in my target table is also my synthetic key. (I have created a sequence on the primary key)
    -When the "Match by constraint" in the operator properties of the target table is set to "All constraints" I get the VLD-2780 error message during validation.
    - However when the "Match by constraint" is set to "No constraints" I can generate the merge statement in my intermediate result but my validation is now giving me this message:"VLD-2750: Missing update matching criteria in TARGET_TABLE".
    - My synthetic key property is set as follow:
    Load Column when Inserting Row = Yes
    Load Column when Updating Row = No
    Match Column when Updating Row = No
    Update:Operation =
    Match Column when Deleting Row = Yes
    I have tried other options wihout much success. I can't seem to pass the validation step.
    Any help will be greatly appreciated.
    Thanks Much!

    There are two ways of matching incomming rows with rows present in a target table during updates. One is to use the key constraints. You can see this by inspecting the target object properties in the mapping and checking the 'Match by constraint' parameter. This is recommended in case you have defined key constraints on the target objects.
    The other (if match by constraints is set to 'no constraints') is to set the Match Column when Updating to yes (and conversely, Load Column when Updating to 'No') for individual columns that have to be matched (as sugested above).
    If you get the VLD-2750 message, it means that one of the target objects does not have any matching criteria set for updates. In an insert/update mapping you should use either the first or the second matching method for all your target objects.
    Regards:
    Igor

  • Returning clause in MERGE statement

    Hi ,
    I'm using Oracle 10g Version
    I tried the below code using UPDATE  with Returning Clause & MERGE with Returning Clause .
    I found NO errors while working with UPDATE statement  . The following is the code with UPDATE statement
    DECLARE
       TYPE empno_list IS TABLE OF emp.empno%TYPE;
       vempno_list   empno_list;
    BEGIN
          UPDATE emp
             SET comm = 11
           WHERE deptno IN (SELECT deptno FROM dept)
       RETURNING empno
            BULK COLLECT INTO vempno_list;
       FOR i IN vempno_list.FIRST .. vempno_list.LAST
       LOOP
          DBMS_OUTPUT.put_line ('Values of EMP ' || vempno_list (i));
       END LOOP;
    END;  
    But getting the error PL/SQL: ORA-00933: SQL command not properly ended  when working with MERGE Statement
    declare
    type empno_list  is  table of emp.empno%type;
    vempno_list empno_list;
    begin               
       merge into emp tgt
          using dept src
            on (src.deptno =tgt.deptno)
            when matched then
             update set tgt.comm=12
           returning tgt.empno bulk collect into vempno_list ;
            for i in vempno_list.first .. vempno_list.last loop
                    dbms_output.put_line('Values of EMP '||vempno_list(i) ) ;
            end loop;
    end; 
    Please  suggest me

    Probably because the RETURNING INTO clause doesn't belong to MERGE statement. It's available only for INSERT, UPDATE and DELETE. Here is the quote from Oracle Documentation:
    The static RETURNING INTO clause belongs to a DELETE, INSERT, or UPDATE statement. The dynamic RETURNING INTO clause belongs to an EXECUTEIMMEDIATE statement.
    And here's the link.
    RETURNING INTO Clause
    Hope it helps.
    Ishan

  • Unique constraint error on delete/insert

    Hi,
    I am using Jdeveloper 11.1.1.3.0. I have a ADF table where we can copy lines and delete lines. I get unique constraint error when I save. Looks like the insert operation in happening before the delete operation. Is there a way to set the execution order so that the logical behaviour is delete/update/insert.
    Thanks
    SV

    Hi,
    The unquie contraint is not from the primary key. There are three columns in the table (batch_id, line_number, line_type) which must be unique. In the UI, the user can delete lines, update lines and add lines and finally click the save button that does the commit. On delete the line_number gets re-numbered. So when committing, the unique error occurs because the line number already exists. Looks like insert is happening before update/delete. I cannot do commit after each delete/update/insert. I have to do it only if the user clicks the save button in the end. Is there a way to control the order of execution?
    SR

  • ORA-00001: unique constraint @ impdp with table_exists_action=truncate

    Hi everybody
    I can't understand why my data pump import execution with parameter TABLE_EXISTS_ACTION=TRUNCATE returned ORA-00001 (unique constraint violation), while importing schema tables from a remote database where the source tables have the same unique constraints as the corresponding ones on the target database.
    Now my question is "If the table would be truncated, why I get unique constraint violation when inserting records from a table where the same unique constraint is validated?
    Here are the used parameter file content and the impdp logfile.
    parfile
    {code}
    DIRECTORY=IMPEXP_LOG_COLL2
    CONTENT=DATA_ONLY
    NETWORK_LINK=PRODUCTION
    PARALLEL=1
    TABLE_EXISTS_ACTION=TRUNCATE
    EXCLUDE=STATISTICS
    {code}
    logfile
    {code}
    Import: Release 10.2.0.1.0 - Production on Gioved� 22 Ottobre, 2009 15:33:44
    Copyright (c) 2003, 2005, Oracle. All rights reserved.
    Connesso a: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    FLASHBACK automatically enabled to preserve database integrity.
    Starting "IMPEXP"."PROVA_REFRESH_DBCOLL": impexp/********@dbcoll SCHEMAS=test_pump LOGFILE=test_pump.log parfile=refresh_dbcoll.par JOB_NAME=prova_refresh_dbcoll
    Estimate in progress using BLOCKS method...
    Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
    Total estimation using BLOCKS method: 523 MB
    ORA-31693: Table data object "TEST_PUMP"."X10000000_TRIGGER" failed to load/unload and is being skipped due to error:
    ORA-00001: unique constraint (TEST_PUMP.SYS_C00726627) violated
    ORA-31693: Table data object "TEST_PUMP"."X10000000_BASIC" failed to load/unload and is being skipped due to error:
    ORA-00001: unique constraint (TEST_PUMP.SYS_C00726625) violated
    Job "IMPEXP"."PROVA_REFRESH_DBCOLL" completed with 2 error(s) at 15:34:04
    {code}
    Thank you
    Bye Alessandro

    I forgot to read the last two lines of the documentation about TABLE_EXISTS_ACTION where it says:
    "TRUNCATE cannot be used on clustered tables or over network links."
    So it seems that it ignored the clause for the use of NETWORK_LINK and unreasonably opted for an APPEND action instead of throwing an error to highlight the conflicting parameters in the used configuration.
    Bye Alessandro

  • Unique Constraint on a Table

    I want to have a unique constraint on deptno and emp_name in emp table.
    What I want is:
    Any Dept can have 100 Steves OR 100 Johns but only 1 Robert
    Dept No               Emp Name     
    10               Steve
    10               Steve
    10               Robert
    20               Steve
    20               Robert
    20                John
    20               John
    How can we achieve this with unique constraint??
    Cheers
    Prasad.

    You are talking about unique constraint and you want to have duplicate records in a column with unique constraint. No, what you want is not possible with unique constraint. When you have a unique constraint on emp_name, how can you have 100 johns or 100 steves. Forget about 100, you can't have the second john/steve.

  • Help needed for PK_REV_COL unique constraint violation

    We’re receiving a SNPW.PK_REV_COL unique constraint violation when trying to reverse a pipe delimited source file. There are no duplicate column names within the source file but the same column names are used across several different input files. Does anyone have a solution to this problem?

    Hi,
    This is a problem with the Reversed tables from ODI.
    Go to work repository and truncate any "snp_rev...." tables.
    That should solves it.
    Cezar Santos
    [www.odiexperts.com]
    Edited by: Cezar Santos - www.odiexperts.com on 20/10/2009 15:34

Maybe you are looking for

  • Can't update or download apps. Says payment method declined.

    Can't update or download apps. Saying payment method declined.

  • Did you know you needed to clean your monitor from inside every 30 days??

    Did you know that every 30 days it is necessary to clean the computer monitor from the inside? Many people ignore this fact and do not know how. Manufacturers take advantage of this ignorance to increase their sales click this link to learn an easy w

  • CS6 Match Frame Problem, Sequence Clip vs Source Clip issue

    Hey folks. So, I'm on Windows 7, Premiere Pro CS6. I've found an issue with Match Frame (Control F), it seems to be acting inconsistently.  Sometimes when I double click on a clip in my sequence and hit F it brings up the sequence clip, other times i

  • New Razor is Dead

    My one month old razr discarged in 2 hours yesterday morning. I charged it and it worked yesterday. Today it won't even turn on. It was on charge all night after I let it run down. The person at the store said they would have one shipped to me within

  • For Those Who Can't Boot After Upgrading To 10.5.6

    For Those Who Can't Boot After Upgrading To 10.5.6 (and i am one of those) how is Apple supposed to make them able to install future fixes and updates once they finally acknowledge and address this horrible bug? will they send free bootable CDs with