Insert, update and delete on updatable join views

Hi I need to insert, update and delete data in a views. I tried the foloing example
http://download-uk.oracle.com/docs/cd/B14117_01/server.101/b10739/views.htm#i1006232
We have two tables:
CREATE TABLE dept (
deptno NUMBER(4) PRIMARY KEY,
dname VARCHAR2(14),
loc VARCHAR2(13));
CREATE TABLE emp (
empno NUMBER(4) PRIMARY KEY,
ename VARCHAR2(10),
job VARCHAR2(9),
mgr NUMBER(4),
sal NUMBER(7,2),
comm NUMBER(7,2),
deptno NUMBER(2),
FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO));
and one view:
CREATE VIEW emp_dept AS
SELECT emp.empno, emp.ename, emp.deptno, emp.sal, dept.dname, dept.loc
FROM emp, dept
WHERE emp.deptno = dept.deptno
AND dept.loc IN ('DALLAS', 'NEW YORK', 'BOSTON');
this update command works successfully
UPDATE emp_dept
SET sal = sal * 1.10
WHERE deptno = 10;
but this one fails because it attempts to modify the base dept table, and the dept table is not key preserved in the emp_dept view.:
UPDATE emp_dept
SET loc = 'BOSTON'
WHERE ename = 'SMITH';
I tried to create the view with "WITH CHECK OPTION" clause but whith no success :(
My question is: how can I do this with a simple across this view. I rather not use Instead Of Trigger because it take a lot of PL/SQL code :(
thanks in advance
Operator

UPDATE emp_dept
SET loc = 'BOSTON'
WHERE ename = 'SMITH';But that doesn't make sense. You cannot just LOC for SMITH, because LOC is not an attribute of EMP. If you change the LOC in the view then you must change it for all employees in DEPT 30 (or whatever).
The key preserved thing is merely about maintaining your data integrity.
I rather not use Instead Of Trigger because it take a lot of PL/SQL code :(The problem is, your business rule is not clear. Are you wanting to change the LOC for the DEPT record which is the DEPTNO to which SMITH belongs? Or are you wanting to change SMITH's DEPTNO to be the one for the BOSTON office?
Cheers, APC

Similar Messages

  • Insert, update and delete trigger over multiple Database Links

    Hello guys,
    first of all I'll explain my environment.
    I've got a Master DB and n Slave Databases. Insert, update and delete is only possible on the master DB (in my opinion this was the best way to avoid Data-inconsistencies due to locking problems) and should be passed to slave databases with a trigger. All Slave Databases are attached with DBLinks. And, additional to this things, I'd like to create a job that merges the Master DB into all Slave DB's every x minutes to restore consistency if any Error (eg Network crash) occurs.
    What I want to do now, is to iterate over all DB-Links in my trigger, and issue the insert/update/delete for all attached databases.
    This is possible with the command "execute immediate", but requires me to create textual strings with textually coded field values for the above mentioned commands.
    What I would like to know now, is, if there are any better ways to provide these functions. Important to me is, that all DB-Links are read dynamically from a table and that I don't have to do unnecessary string generations, and maybe affect the performance.
    I'm thankful for every Idea.
    Thank you in advance,
    best regards
    Christoph

    Well, I've been using mysql for a long time, yes, but I thought that this approach would be the best for my requirements.
    Materialized View's don't work for me, because I need real-time updates of the Slaves.
    So, sorry for asking that general, but what would be the best technology for the following problem:
    I've got n globally spread Systems. Each of it can update records in the Database. The easies way would be to provide one central DB, but that doesn't work for me, because when the WAN Connection fails, the System isn't available any longer. So I need to provide core information locally at every System (connected via LAN).
    Very important to me is, that Data remain consistent. That means, that it must not be that 2 systems update the same record on 2 different databases at the same time.
    I hope you understand what I'd need.
    Thank you very much for all your replies.
    best regards
    Christoph
    PS: I forgot to mention that the Databases won't be very large, just about 20k records, and about 10 queriees per second during peak times and there's just the need to sync 1 Table.
    Edited by: 907142 on 10.01.2012 23:14

  • Insert,update and delete commands

    hi everybody,
    how can i make a button that runs a specific insert update and delete commands
    i am using adf faces jdeveloper 11.1.1.2.0
    than you for all

    thank you guys for your interest what i need in my button click is to take some values from outputtext controls and execute an insert command according to these values what i have done is make a stored procedure and make a client interface function to my amImpl class and i have called getDBTransaction().executeCommand(command); it runs well when i didn't enter values in outputtext controls and it throws an exception when i put the values
    the exception is javax.servlet.ServletException: Unable to resolve a Validator instance using either validatorId '' or binding '#{bindings.FileName.validator}'.
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:270)
         at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
         at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.portlet.client.adapter.adf.ADFPortletFilter.doFilter(ADFPortletFilter.java:26)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:191)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:97)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:420)
         at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:420)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:247)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:157)
         at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:94)
         at java.security.AccessController.doPrivileged(Native Method)
         at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
         at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
         at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:138)
         at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:70)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at com.bea.content.manager.servlets.ContentServletFilter.doFilter(ContentServletFilter.java:178)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.webcenter.lifecycle.filter.LifecycleLockFilter.doFilter(LifecycleLockFilter.java:136)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:159)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.dms.wls.DMSServletFilter.doFilter(DMSServletFilter.java:326)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3592)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2202)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2108)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1432)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Caused by: javax.faces.convert.ConverterException: Unable to resolve a Validator instance using either validatorId '' or binding '#{bindings.FileName.validator}'.
         at com.sun.faces.taglib.jsf_core.ValidatorTag$BindingValidator.validate(ValidatorTag.java:168)
         at org.apache.myfaces.trinidad.component.UIXEditableValue.validateValue(UIXEditableValue.java:345)
         at org.apache.myfaces.trinidad.component.UIXEditableValue.validate(UIXEditableValue.java:172)
         at org.apache.myfaces.trinidad.component.UIXEditableValue._executeValidate(UIXEditableValue.java:503)
         at org.apache.myfaces.trinidad.component.UIXEditableValue.processValidators(UIXEditableValue.java:270)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.validateChildrenImpl(UIXComponentBase.java:1024)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.validateChildren(UIXComponentBase.java:1009)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processValidators(UIXComponentBase.java:816)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.validateChildrenImpl(UIXComponentBase.java:1024)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.validateChildren(UIXComponentBase.java:1009)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processValidators(UIXComponentBase.java:816)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.validateChildrenImpl(UIXComponentBase.java:1024)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.validateChildren(UIXComponentBase.java:1009)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processValidators(UIXComponentBase.java:816)
         at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.access$101(ContextSwitchingComponent.java:39)
         at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent$3.run(ContextSwitchingComponent.java:122)
         at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent._processPhase(ContextSwitchingComponent.java:309)
         at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.processValidators(ContextSwitchingComponent.java:125)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.validateChildrenImpl(UIXComponentBase.java:1024)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.validateChildren(UIXComponentBase.java:1009)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processValidators(UIXComponentBase.java:816)
         at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.access$101(ContextSwitchingComponent.java:39)
         at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent$3.run(ContextSwitchingComponent.java:122)
         at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent._processPhase(ContextSwitchingComponent.java:309)
         at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.processValidators(ContextSwitchingComponent.java:125)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.validateChildrenImpl(UIXComponentBase.java:1024)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.validateChildren(UIXComponentBase.java:1009)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processValidators(UIXComponentBase.java:816)
         at org.apache.myfaces.trinidad.component.UIXForm.processValidators(UIXForm.java:82)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.validateChildrenImpl(UIXComponentBase.java:1024)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.validateChildren(UIXComponentBase.java:1009)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.processValidators(UIXComponentBase.java:816)
         at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1058)
         at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:700)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl$ProcessValidationsCallback.invokeContextCallback(LifecycleImpl.java:1203)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:303)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:177)
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
         ... 42 more
    thank you for help

  • How to Implement basic Insert ,Update and delete Actions

    Hi all,
              i want to implement 1)INSERT 2)UPDATE 3)DELETE actions in webdynpro application means i have to add a new record to my R/3 backend and update and delete records from my database
    can anyone tell me how to do these actions
    Regards
    Padma N

    Hi Murtuza ,
                           I have 2 views in my application.In the first view i enterd some purchaseorder number and clicked serarch button.The items regarding that purchaseorder gets populated in the table which is in second view.All the data is in R/3 backend system.
    the code i used to get the details of that particular purchaseorder is
    try {
    wdcontext.currentZ_Matrls_For_Inputlement().modelObiect.execte();
    catch(RFCException e){
    /* Catch the Exception Here */
    Here now i want to delete one record of that particular purchaseorder from the database.So Wat should be the code to delete record from R/3 Model
    Regards
    Padma N

  • Detect inserts, updates and deletes

    How can I detect inserts, updates and deleted made bij other users of a database when I have an open resultset.
    ive tried the following to test the database:
          if (getDatabaseMetaData().updatesAreDetected(getResultSet().TYPE_SCROLL_SENSITIVE)) {
            System.out.println("Updates are detectable..");
          }But the result is always negative. The database cannot detect the changes.
    Iam using java.sql.ResultSet etc.. And not the oracle.sql...
    Can anyone tell me if its possible to detect changes in data to which a resultset referres and how to program it.
    Greetz.
    Marc

    Very strange - the message:
    javax.faces.FacesException: java.sql.SQLException: Lock time out; try later.
    definitely implies the locking problem... but perhaps your app is actually setting up the lock- are you doing the tutorial verbatim? It works fine for me... might also look in your server.log and see if you see anything there? To do this, go to the server navigator, right click on deployment server and choose View Log File.
    And just having the latest version isn't enough - you need the patch - to get that, see the readme: http://developers.sun.com/prodtech/javatools/jscreator/reference/docs/updateREADME.pdf
    v

  • Insert,update and delete data in a table using webdynpro for abap

    Dear All,
    I have a requirement to create a table allowing the user to add rows in it and update a row as well as delete a row from that table.To do this I guess I have to make use of ALV.But using ALV I am not able to enter data to a table where as I can make a column editable delete a row etc. please guide me to perform these operations(insert,update and delete) on table.
    Thanks,
    Reddy.

    Hi Sridhar,
    By using ALV you can do all insert delete etc things. if you want to edit i mean you can yenter data in ALV.
    Check this...
    http://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/3133474a-0801-0010-d692-81827814a5a1
    Editing alv in web dynpro
    editing rows in alv reports
    Re: editing rows and columns in alv reports in webdynpro abap
    Cheers,
    Kris.

  • RFC enabled function module for insert update and delete in a Ztable..

    friends..
    Is there any standatd RFC enabled function module to insert , update and delete data in a custom database-table (Ztable)? if not how can we create it? plz give me the details steps..
    what are the import, export parameters and how to develop and process it.. (for example: suppose fields in the table is Emp_Id, Name, Address)
    Thanks and Regards

    Hi,
    Try this code.
    REPORT ZMMC071Z_RMV.
    TYPE-POOLS : ABAP.
    FIELD-SYMBOLS: <DYN_TABLE> TYPE STANDARD TABLE,
                   <DYN_WA>,
                   <DYN_FIELD>,
                   <LV_CONDI>.
    DATA: DY_TABLE TYPE REF TO DATA,
    DY_LINE TYPE REF TO DATA,
    XFC TYPE LVC_S_FCAT,
    IFC TYPE LVC_T_FCAT.
    SELECTION-SCREEN BEGIN OF BLOCK F1 WITH FRAME TITLE TEXT-001.
    PARAMETERS: P_TABLE  LIKE DD02L-TABNAME OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK F1.
    Evento: At Selection Screen                                          *
    START-OF-SELECTION.
      PERFORM GET_STRUCTURE.
      PERFORM CREATE_DYNAMIC_ITAB.
      PERFORM GET_DATA.
    END-OF-SELECTION.
    *& Form get_structure
    text
    FORM GET_STRUCTURE.
      DATA : IDETAILS TYPE ABAP_COMPDESCR_TAB,
      XDETAILS TYPE ABAP_COMPDESCR.
      DATA : REF_TABLE_DES TYPE REF TO CL_ABAP_STRUCTDESCR.
      DATA VL_LENGHT(30).
    Get the structure of the table.
      REF_TABLE_DES ?=
      CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( P_TABLE ).
      IDETAILS[] = REF_TABLE_DES->COMPONENTS[].
      LOOP AT IDETAILS INTO XDETAILS.
        CLEAR XFC.
        XFC-FIELDNAME = XDETAILS-NAME .
        XFC-DATATYPE = XDETAILS-TYPE_KIND.
        XFC-INTTYPE = XDETAILS-TYPE_KIND.
        XFC-INTLEN = XDETAILS-LENGTH.
        XFC-DECIMALS = XDETAILS-DECIMALS.
        APPEND XFC TO IFC.
      ENDLOOP.
    ENDFORM. "get_structure
    *& Form create_dynamic_itab
    text
    FORM CREATE_DYNAMIC_ITAB.
    Create dynamic internal table and assign to FS
      CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
        EXPORTING
          IT_FIELDCATALOG = IFC
        IMPORTING
          EP_TABLE        = DY_TABLE.
      ASSIGN DY_TABLE->* TO <DYN_TABLE>.
    Create dynamic work area and assign to FS
      CREATE DATA DY_LINE LIKE LINE OF <DYN_TABLE>.
      ASSIGN DY_LINE->* TO <DYN_WA>.
    ENDFORM. "create_dynamic_itab
    *&      Form  get_data
          text
    -->  p1        text
    <--  p2        text
    FORM GET_DATA .
    *Get data from p_table into internal table <DYN_TABLE>
      SELECT * INTO TABLE <DYN_TABLE>
          FROM (P_TABLE)
    Here you can implemente function DELETE, INSERT.
    ENDFORM.                    " De_para

  • How to perform insert, update and delete in a table component

    hi all,
    i am using a table component in my page. I want to retreive data from multiple tables as well as perform insertion, updation and deletion operation.The changes should be affected in the corresponding tables. can anyone provide a solution for my problem.
    Thanks in advance
    regards,
    prasant

    There is a great tutorial for insert, update and delete records in a table.
    http://developers.sun.com/prodtech/javatools/jscreator/learning/tutorials/2/inserts_updates_deletes.html
    Hope it helps.
    Thanks,
    Moumita

  • Any KM which can insert , update and delete

    hi everyone ,
    i have a oracle target which i want to keep synchronize daily with sql server source which means if there is any deletion in source ,i want a deletion in target too . Hope iam clear .
    Is there is any KM that can do insert ,update and delete . i know the other way is to truncate and load but i few tables which are millions of records doing truncating daily not possible .
    is there is any way out for this issue ?
    Thanks

    Or
    1) create to load only the PK into a temp table (yellow interface as suggestion)
    2) create a procedure to delete your target with a "not exists" option from the created temp table
    3) create an "normal" interface with Incremental Update
    Make any sense?

  • RFC enabled function module to insert , update and delete data in a ZTABLE

    friends..
    Is there any standatd RFC enabled function module to insert , update and delete data in a custom database-table (Ztable)?
    if not how can we create it? plz give me the details steps..
    what are the import, export parameters and how to code and process it.. (for example: suppose fields in the table is Emp_Id, Name, Address. I need to develop a RFM which does the 3 tasks, insert update delete in the same RFM)
    Thanks and Regards

    create a f.n mod in se37 and make it rfc enabled.  ur import parameters are Emp_Id, Name, Address and TASK and u can have an export parameter like result which gives the status of the update. based on task u can insert using keyword INSERT....and update using UPDATE or MODIFY and delete using DELETE. these keyword are not compelte with syntax but need to refer the SAP documentation.

  • Capture insert, update and delete messages PlSql

    How can I capture insert, update and delete messages in PlSql, like
    '1 row inserted'.
    TIA, Leo

    You can check the following script --
    satyaki>
    satyaki>create table test_598703
      2   (
      3      Sno   number(5)
      4   );
    Table created.
    satyaki>
    satyaki>declare
      2    cnt  number(5);
      3  begin
      4    insert into test_598703
      5    select empno
      6    from emp;
      7   
      8    cnt := sql%rowcount;
      9   
    10    dbms_output.put_line(cnt||' Rows Inserted');
    11  exception
    12    when others then
    13      dbms_output.put_line(sqlerrm);
    14  end;
    15  /
    16 Rows Inserted
    PL/SQL procedure successfully completed.
    satyaki>
    satyaki>select * from test_598703;
           SNO
          7369
          7499
          7521
          7566
          7654
          7698
          7782
          7788
          7839
          7844
          7876
           SNO
          7900
          7902
          7934
          9898
          7006
    16 rows selected.Similar approach need to follows for other operations.
    Regards.
    Satyaki De.

  • Insert, update and delete with xml file

    I have sample xml file called ws.xml.It got following data
    <uddi>
    <webservice>
    <name>movies</name>
    <path>/movies</path>
    <output>movies.wsdl</output>
    <url>www.movies.com</url>
    </webservice>
    </uddi>
    So, with how do i insert or delete or modify the webservice tag?

    Hi Arvind You can insert , modify and delete any node in XML using DOM parser.. First read XML file and get tree of entire node then traverse through entire tree and reached at specific point .. Then using DOM parser you can modify ,insert or delete any node ... Please check NODE class of API.. In that varios methods are there.. like removeChild();modifyChild()... After doing proper operation ...again write root node to file using FileWriter..
    Regards
    Pradeep Jain

  • XSQL updates and deletes

    Hello
    I can insert records in a table using the xsql but am unable to update and delete from tables using xsql ....
    need help its urgent ..
    can anyone mail me some sample code for xsql update and delete ...
    thank u
    null

    If you're using BC4J and XSQL together, then you can leverage the oracle.jbo.xsql.UpdateViewObject action handler that ships with BC4J for use in XSQL pages to make it easy to handle hierarchical XML documents using BC4J view objects.
    BC4J view objects can both produce and consume XML documentment using the writeXML() and readXML() API's on oracle.jbo.ViewObject, respectively.
    If there are view links in place, then the BC4J XML processing mechanism follows these links to nested, detail information. When you "feed" an existing XML document to the YourViewObject.readXML() method, it automatically processes inserts, updates, and deletes, as well as apply any BC4J business logic that exists in your Entity Objects (if any).
    The BC4J Action Handlers make it easy to combine BC4J with XSQL pages without having to write the writeXML() and readXML() calls by hand.

  • Data Services job rolling back Inserts but not Deletes or Updates

    I have a fairly simple CDC job that I'm trying to put together. My source table has a record type code of "I" for Inserts, "D" for deletes, "UB" for Update Before and "UP" for Update After. I use a Map_CDC_Operation transform to update the destination table based on those codes.
    I am not using the Transaction Control feature (because it just throws an error when I use it)
    My issue is as follows.
    Let's say I have a set of 10,000 Insert records in my source table. Record number 4000 happens to be a duplicate of record number 1. The job will process the records in order starting with record 1 and begin happily inserting records into the destination table. Once it gets to record 4000 however it runs into a duplicate key issue and then my try/catch block catches the error and the dataflow will exit. All records that were inserted prior to the error will be rolled back in the destination.
    But the same is not true for updates or deletes. If I have 10000 deletes and 1 insert in the middle that happens to be an insert of a duplicate key, any deletes processed before the insert will not be rolled back. This is also the case for updates.
    And again, I am not using Transaction Control, so I'm not sure why the Inserts are being rolled back, but more curiously Updates and Deletes are not being rolled back. I'm not sure why there isn't a consistent result regardless of type of operation. Does anyone know what's going on here or  what I'm doing wrong/what my misconception may be?
    Environment information: both source and destination are SQL Server 2008 databases and the Data Services version we use is 14.1.1.460.
    If you require more information, please let me know.

    Hi Michael,
    Thanks for your reply. Here are all the options on my source table:
    My Rows per commit on the table is 10,000.
    Delete data table before loading is not checked.
    Column comparison - Compare by name
    Number of loaders - 1
    Use overflow file - No
    Use input keys - Yes
    Update key columns - No
    Auto correct load - No
    Include in transaction - No
    The rest were set to Not Applicable.
    How can I see the size of the commits for each opcode? If they are in fact different from my Rows per commit (10,000) that may solve my issue.
    I'm new to Data Services so I'm not sure how I would implement my own transaction control logic using a control column and script. Is there a guide somewhere I can follow?
    I can also try using the Auto correct load feature.  I'm guessing "upsert" was a typo for insert? Where is that option?
    Thank you very much!
    Riley

  • Can the old_value check on updates and deletes be disabled in streams ?

    I am in the beginning phases of streams replication. Replicating one table from a source db to a target db.
    This table exist in both source and target and has a PK on ID.
    SQL> desc api.junk;
    Name Null? Type
    ID NOT NULL NUMBER
    PASSWORD VARCHAR2(20)
    The password on the target database may be different due to security reasons. This will be done via a before insert trigger.
    PROBLEM..
    When i run
    SQL> delete from api.junk where id=1;
    It will run fine in the source but it seems to check both the ID and the PASSWORD column in target, then fails. Is there a way to prevent it from checking the old values when execute updates and deletes ?
    - Shawn

    The ability to turn off conflict detection in Streams on non-key columns was introduced in Oracle 10g. Please see the documentation for the procedure compare_old_values in the dbms_apply_adm package.

Maybe you are looking for

  • Syncing ipod/iphone to a new computer

    I recently purchased a new Macbook pro and came here to find out how to sync my iPod touch to it without losing everything and really didn't find much. I managed to do it correctly and thought it might help others if I posted a how to. 1. Start iTune

  • More than 255 Characters in 2D barcode

    Hi All, We are not able to print more than 255 characters in a 2D barcode which is used in a label using a smartform. We did Checked note 497380 but cant use SO10 as its a dynamic data. Any pointers would be extremely useful. Regards, Swati

  • Problem with E61 - no more light for keyboard

    I have a E61 and now there is no more light for the keyboard I put all default settings but the keyboard stays always dark What is the problem ? Thanks for helping

  • WLST and reading a property with a "." in the name...

    I am trying to share a properties file between two processes. The file has entries in it similar to the following: domain.name=myDomainName in my wlst script, when I try to read this property and assign its value to a variable in my script, it chokes

  • Problem with partition after deleting a bootcamp partition

    Hi everyone ! First, excuse my english, I'm from France. This morning, I've deleted the bootcamp partition I had created weeks ago. But when I've tried to extend the principal partition on the empty space left by bootcamp, the Disk Utilitaire says :