More elegant solution for error "Current version of data in database..."

When two users try to manipulate the same record in a form, one of them gets the "Current version of data in database has changed since user initiated update process." when updating.
I'd like a more elegant solution (or prevention) of this situation by disabling the update button on the form of the second user who opens the record and display a message on the page that the record is currently opened by another user, so it is only available in "read-only mode" by the other user.
How can I do something like this? Or what are the multi user policies that other apex developers on the forum use and how are they implemented?

I don't think I would disable anything, as you need to consider the situation where someone opens a record, then goes to lunch.
You might update 2 columns such as "last_opened_on" and "last_opened_by" for the row. Then when the 2nd person opens it you could display a prominent indicator (red+bold) if it was opened by someone else in the last 10 min, as well as showing who opened it last. If it hasn't been opened in over 8 hours, you could basically de-emphasize that indicator by making it light gray or something. The goal is not to lock or disable anything, but warn a user when they open a record that was recently opened. If logistically possible, this gives them the opportunity to call / IM each other to coordinate.
Tyler Muth
http://tylermuth.wordpress.com
[Applied Oracle Security: Developing Secure Database and Middleware Environments|http://sn.im/aos.book]

Similar Messages

  • APEX Error: Current version of data in database has changed since user init

    Hi:
    APEX 4.1
    I have a page with 2 regions. The first region is built with custom SQL using the APEX APIs. I have a process the can successfully update records.
    I built the second region with the tabular form wizard. This created the multi row update process.
    I created a region button and the two process respond to that button: process for first region, then process for the second region.
    When I add data to the second region and click the region button, I get the following error:
    Current version of data in database has changed since user initiated update process. current row version identifier = "A884FA378C851786DDFE3A33709CB23C" application row version identifier = "9ED06A0F09F80F054AB781CA24CC4CBF"
    I know it has something to do with these two types of regions being on the same page, because when I create a page of just the table form, the data is updated.
    Can anyone suggest what I might be doing wrong?
    Thanks.

    Hello
    If you try update the same data from 2 places you will got this message because:
    Apex forms have locking mechanism.
    1. During fetch data to form apex calculate checksum from every items on the forms.
    2. Before update process apex again fetch data from database (in background) and calculate checksum again if checksum from point 1 is the same like this checksum APEX realy update data with new item values. If no, You will got your error (apex secure You, You realy don't know what you update).
    According this if you change data which you use in the form between 1 and 2 point you will got this "error". You can check it for example if you change data from SQL/Plus or from other form.
    Probably you forget about this locking mechanism during designe your process from APEX API <- successfully update records (maybe successful but you don't know what you updated) : )
    If I helped You please check correct or helpful :)

  • Tabular form Update Error,"Current version of data in database has changed

    I'm getting an error when updating a Apex Tabular form. It's complaining that the row id's are out-of-sync. The error reads,' Current version of data in database has changed since user initiated update process. current row version identifier = "56DW5A8A7EBA3B42073AE6E71480A784" application row version identifier = "99B52A15F10E34647E9E18B6B7AE8C30" .
    Has anyone received this error? Any solutions? Note that the primary is being populated by a trigger. I have another tabular form for a different application that updates without issue, this however, uses a sequence to update the primary key.
    Thanks,
    James

    Make sure that the form is defined such that it "knows" that the PK is being set by a trigger. Do not try to set it in the form if the trigger is doing it. Pretty much if a trigger attempt to modify any column that also was editable (including hidden columns) in the form, the two will conflict.
    The other issue could be that do you have any items on the rows that are disabled? Disabled items are not sent to session state so Apex won't be able to properly compute the checksum and it'll find a discrepancy.

  • MRU Error : Current version of data in database has changed since user init

    When i use HTMLDB Wizard to create Master Detail Form
    (You can see step by step what i doing by see this url :
    http://jroller.com/resources/w/wildan83/MRU%20Error.pdf
    The is error in MRU :
    Error in mru internal routine: ORA-20001: Error in MRU: row= 1, ORA-20001: ORA-20001: Current version of data in database has changed since user initiated update process. current checksum = "A884FA378C851786DDFE3A33709CB23C", item checksum = "0EEFFABE8252B0B279DB14A77F567F5D"., update "CNAP2"."ENROLLMENT" set "STUDENT_ID" = :b1, "SECTION_ID" = :b2, "ENROLL_DATE" = :b3, "FINAL_GRADE" = :b4.
    If there something missing.., just say ..
    Thanks for the help.

    Oh i see ..,i never think if that is the source of the MRU
    error.
    Ok ..,
    Now ..., i have new question .., how can i change so the the primay key in detail table (enrollment table), i have one primary key with two columns .., if you don't understand what i mean ..,
    check this alter table statement :
    ALTER TABLE ENROLLMENT
    ADD CONSTRAINT ENR_PK PRIMARY KEY
    (STUDENT_ID
    ,SECTION_ID) ;
    Now the question is .., when i using wizard to create master detail form .., html db automatically make student_id and section_id as the primary at "application level (html db)" .., how can i change this behaviour ..,
    i want the html db not treat this two column as primary key ?
    Do i have to create master detail form manually to accomplish this ?
    Thanks before .., sorry if my english is not too good.

  • Capturing and dealing with ORA-20001: Current version of data in database..

    Hi all,
    If a user has an edit screen open, and for what ever reason (another user, trigger) the data for that record changes, on save theh user gets ORA-20001: "Current version of data in database has changed since user initiated update process. "
    Understandably.
    How do you guys make this look a little more profesional to ther user. Can you captuere this error and direct them to a message?
    Thanks.
    NT

    Hi All/ Mr. Neil,
    Ditto on your question. I'm having the same problem.
    Boss really doesn't like it. Any nice gui/ user friendly
    solution?
    Thanks.
    Carol

  • ORA-20001: Current version of data in database has changed since user.....

    Hi,
    I am having a tabular form which I created using the wizard
    I am facing the below error when I try to update or 'Add Row'
    Error in mru internal routine: ORA-20001: Error in MRU: row= 1, ORA-20001: ORA-20001: Current version of data in database has changed since user initiated update process."
    I havenot changed the query but I made certain columns based on select list,gave some default values,etc..
    How can I solve this problem?
    Also,I am getting the above error once I change the query for another tabular form.The client wanted some more fields to be displayed on the page.
    How can I solve this problem too?
    Thanks and Regards,
    K.tanna

    Can somebody help me out?

  • ORA-20503: Current version of data in database has changed since user initi

    Hi,
    I am getting the below error when I try to update an existing record.
    "ORA-20505: Error in DML: p_rowid=11887, p_alt_rowid=CASE_ID, p_rowid2=, p_alt_rowid2=. ORA-20503: Current version of data in database has changed since user initiated update process. current checksum = "7EB7B6F69DB421184B4CEE0884E435C6" application checksum = "53106AB0EB97FD1442D85F2AAE3AFA69"
    Error Unable to process row of table "
    And this does not happen always. IT happens once in a while and I am unable to check what is causing the issue. It is a critical issue and need to be fixed asap.
    Any help is greatly appreciated!
    Thanks!
    Kavya

    We are using Apex version: 3.1.2.00.02
    What else could be the reason and how should I fix it?
    At this point the application is migrated and I am unable to write a custom package for the DML operations. And this issue happens randomly and that too only while updating the data.
    Please help!

  • TABULAR FORM UPDATE ERROR CURRENT VERSION OF DATA IN DB HAS CHANGED...!

    Hi all Experts on Apex 423 and Oracle xe 11g r2...
    I'm getting a systematic error when updating a Apex Tabular form : the Oracle internal engine complaining that the row ID's are out of syncr?  I'm use ROWID instead of ID  ( trigger has been created but I think should not used ...!)
    Any advise.
    remark:  The  SIMPLE DATA APPLICATION has the same issue when trying to update the QUANTITY field on ORDERS... STRANGE NOT?
    MFOConsulting  Switzerland
    [email protected]

    Hi All Apex Experts,
    Détails  with Détails records  in a TABULAR FORM .
    I tranformed this program Master-Détails with Détails records  in FORM ( not tabular)  and this  error message is no more displayed on the screen.!!
    CONCLUSION:   there is a   SERIUOS  BUG in Apex 423.00.08   and 424.00.008!!
    I hope that People in Oracle Corporation is  working on this bug. and the next release of  Apex 5.0 will correct it.
    PS:   The SIMPLE DATA BASE installed   with any version of Apex... display this MSg .( update ORDERS  quantity of items and you recieve thiS fanny message!
    MFOConsulting Switzerland

  • Back button to re-edit form..."Current version of data..." error?

    I've noticed a fairly common error that my users are running into. Here is the situation...
    A user navigates to a form...makes modifications...saves the form...and is redirected to another page. Then, the user clicks the browser back button to re-edit the form...saves the form and gets the following error...
    "...Current version of data in database has changed since user initiated update process...."
    I am currently running v2.0...but I was able to also duplicate the issue within v3 (online...Customer Tracker sample application).
    Is there any way to catch the error to display a custom message?
    Or maybe some settings that I am missing to guarantee that when the user clicks the back button, the page is refreshed so it doesn't show the cached version with the old data?
    Or maybe there is another way to approach this?
    Thanks...
    Matt

    Matt,
    This is functioning exactly as it should... Imagine what could happen if it didn't work that way! People would overwrite other's information all the time.
    I think the solution you need is two fold: user training and app modifications.
    I know what you're thinking, user training, hah! But it's going to help as you make more of these kinds of web apps.
    As for app modifications there are two I can think of that may help.
    1. I don't know how the users open the app but if they click on a link then you can have the popup window open without tool bars and such (but they still have the backspace on the keyboard).
    2. Add a button on the page they are redirected to after saving the form. Make the condition of the back button "If item is not null" and put PXX_ITEM_NAME in expression 1.
    Then create the item you just put in expression 1as display as text (saves state). Set the condition to never. Now go to the page with the form, and create a process that sets PXX_ITEM_NAME equal to the value of the item used as the primary key for the form. Make sure the process only fires after an update is made.
    Then when the users get to the page after making a modification they will see a "back" button.
    The last step is to create a branch that will take the user back to the form if they click the button and populates the form item for the primary key.
    Let me know if this is making any sense or not.
    Dan
    Dan

  • Error in mru : ORA-20001: Error in MRU: row= 1 Current version of data ...

    hi i am getting tihs error msg
    Error in mru internal routine: ORA-20001: Error in MRU: row= 1, ORA-20001: ORA-20001: Current version of data in database has changed since user initiated update process. current checksum
    i'll try to show a form table in which i can edit and add data
    when i use the wizzard it is all fine with editing but i cant creat a new item because i have to insert my primary key and that shoud be done automatically.
    ok again
    my PK is at first col1 and second col2
    i got a dropdown list in which i choose an item from col1 to just show items in my form with that value, here are more than one results possible
    no i want to edit col2 up to col4
    or add a line with the same col1 but different col2 and some col3-col4 values
    but if i add a line i want to insert col2 to up to col4 (and the PK from col1 shoud be automatically insert from my dropwdown list i choosed before)
    i want in col2 an drop down list
    so all this works fine i got all the changes i want but when i try do save or update my changes i got the error frome above
    i think the problem is at the primary key thing cause i want to choose a part manually but i have to
    to get the new line actually u use the add row link but i use instead after my select statement an
    Union select :P62_PNR_VOll, null, null, null from dual
    to get my first pk automatically from my dropdown element (in my case :P62_PNR_VOLL)
    how can i solve that error?
    thx for ur help
    regadrs
    Falk

    Hi Falk,
    It is usually best to have a sequence number for the primary key on a table. If you need to restrict other fields to be unique, then you can create a constraint to do this.
    To create a sequence number and apply this to a new record, you need to do two things:
    Let us say that you have a table called TABLEX and this has a numeric primary key field of ID. Do the following in the SQL Commands window
    1 - Create a sequence SQL object:
    CREATE SEQUENCE "TABLEX_ID_SEQ"  MINVALUE 1 MAXVALUE 99999999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE  NOORDER  NOCYCLE2 - Create a trigger:
    CREATE OR REPLACE TRIGGER "TABLEX_BI"
    BEFORE
    INSERT ON "TABLEX"
    FOR EACH ROW
    BEGIN
    IF :NEW.ID IS NULL THEN
      SELECT TABLEX_ID_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
    END IF;
    END;This needs to be enabled, so run:
    ALTER TRIGGER "TABLEX_BI" ENABLEWhen this is done, you then have "An existing trigger" that you can use for your tabular form. When a new record is created, the trigger is run and this checks for a value in the ID field. If this is NULL, then the next value in the sequence is assigned to it.
    Primary Keys can be based on other values. You can use any value from the current record - for example, if you need to get the value from the XXX field, you just reference :NEW.XXX You can use this to pass into a function that returns your new primary key value. But I would recommend keeping to one field for your primary key as this makes things a lot simpler later on.
    Andy

  • Error in MRU: row= 1, ORA-20001: ORA-20001: Current version of data in data

    I have a page that has a form to my issue table and on the same page, in a different region, I have a tabular report that shows the issue_activity for the specified issue. The primary key on the issue table is the issue_no which is a sequence and the primary key on the issue_activity table is (issue_no,line_no), where issue_no comes from the issue table. A parent-child relationship between issue and issue_activity.
    When I add a row to my tabular form and type in some data, I get a (Error in MRU: row= 1, ORA-20001: ORA-20001: Current version of data in database has changed since user initiated update process.) error. When I look at the data, everything looks fine.
    The issue_no and line_no are correctly set. My Issue_no and line_no fields on my report are hidden fields.

    I rebuild the report using a tabular form and populated the primary key with a PL/SQL expression and now it appears to be working. P1_ISSUE_NO is the primary key on the issue table and I could not figure how to get it in the issue_no field of the tabular report when a new line was entered I ended up putting the following code in for the default for
    issue_no on the report:
    Begin
    return :P1_ISSUE_NO;
    end
    It works great.

  • More elegant solution to reporting query?

    I was recently asked to produce a one-time report that would identify any products that were or are currently being sold/stocked out of two different locations (821,822) at once, and where the product is currently is in stock at both. The table layout is basically like this:
    Sales_Staging
    Location_ID
    Product_ID
    Sales_Current
    Sales_1ago
    Sales_2ago
    Sales_72ago
    On_Hand_Current
    On_Hand_1ago
    On_Hand_62ago
    (sales/OH stored horizontally on table, shifted once a week)
    I wanted to produce a report of the products selling out of the two location IDs (821,822)--a list ordered by product, showing the historical sales/inventory at each location side-by-side. For example:
    Location  Product  Sales_Current  Sales_1ago  ... On_Hand_Current ...
    821        ABC       0                    1                   3
    822        ABC       0                    1                   4
    821        DEF
    822        DEFTo get results turned around quickly, I used this ugly SQL below. The Sales_Staging table has millions of records, and the query plodded. I feel like I'm asking Oracle to process the same data for each location twice.
    I'm working in 10gR2. For my own education and future reference, I figured I'd see if the experts had a more elegant solution? Thanks in advance.
    SELECT location_id, product_id, sales..., on_hand...
      FROM Sales_Staging
    WHERE location_id = 821
      AND on_hand_current > 0
      AND (sales_current + sales_1ago + sales_2ago + ... + on_hand_1ago + ...) > 0
      AND product_id in
        (SELECT product_id
            FROM Sales_Staging
          WHERE location_id = 822
             AND on_hand_current > 0
             AND (sales_current + sales_1ago + sales_2ago + ... + on_hand_1ago + ...) > 0)
    UNION
    SELECT location_id, product_id, sales..., on_hand...
      FROM Sales_Staging
    WHERE location_id = 822
      AND on_hand_current > 0
      AND (sales_current + sales_1ago + sales_2ago + ... + on_hand_1ago + ...) > 0
      AND product_id in
          (SELECT product_id
          FROM Sales_Staging
          WHERE location_id = 821
             AND on_hand_current > 0
             AND (sales_current + sales_1ago + sales_2ago + ... + on_hand_1ago + ...) > 0)
    ORDER BY product_id, location_id

    The below query is obviously untested, but at least it shows a different approach to this problem
    with subset_of_sales_staging as
    ( select *
        from sales_staging
       where location_id in (821,822)
         and on_hand_current > 0
         and ( sales_current + ... ) > 0
    select distinct s1.*
      from subset_of_sales_staging s1
         , subset_of_sales_staging s2
    where s1.product_id = s2.product_id
       and (  s1.location_id = 821 and s2.location_id = 822
           or s1.location_id = 822 and s2.locatino_id = 821
    order by product_id
         , location_idChances are good that this query will operate on smaller subsets than your original query. But this depends of course on the data volumes and distributions, which I don't know.
    Regards,
    Rob.

  • Upgrade status for the current version: Outdated for

    Hello,
    we are running solution manager 7 EHP1 sps22.
    this system has been recently upgraded to this version.
    now before running solman_setup i tried to log into the /smd - solution
    manager diagnostics i got the following messages -
    "Upgrade status for the current version is outdated. Please upgrade now""Maintenance mode is enabled. Some applications will be disabled or might
    not work"
    i couldn't change the maintenence mode to disabled mode - since there isno agaent administration in the regular path - Diagnostics
    Administration-Managed SystemsAgent Administration.
    as a result i can't goto Diagnostics Setup-----Diagnostics
    System--Advance setup and start the upgrader - i'm getting the followingerror message - Upgrade status for the current version: Outdated for
    this version .
    LM-Service is in patch 06 - latest release asa far as i know.

    you are running into the same error like in your other thread.
    please avoid double postings
    see SAP Note #1273028
    Known problems in all Releases 80
    The bytecode instrumentation agent 8.0 cannot be used for Solution Manager self-monitoring. Please use Java agent version 7.2 for self monitoring of the Solution Manager Java stack. Otherwise Setup for Introscope Agents fails with
    java.lang.NoSuchMethodError: com.wily.isengard.api.TransportConfiguration.<init>(IZZ)V ...

  • Error:Failed to retrieve data from database [Vendor Code:3001]

    Hello FOlks am trying to run a crystal report but when i try to run it somehow returns this error i.e [Error:Failed to retrieve data from database [Vendor Code:3001], I have no clue wats happening with this.Can anybody please throw some light on this.Am providing the sql behind this report for reference.
    SELECT "CLIENT"."CLIENT_NAME",
            "RECOVERY"."AMOUNT",
            "RECOVERY"."RECOVERY_TRANSACTION_INTERNAL",
            "RECOVERY"."ALLOCATION_CHECK_AMOUNT",
            "RECOVERY"."RECOVERY_DATE"
       FROM "HRI1_OWNER"."CLIENT""CLIENT",
            "HRI1_OWNER"."EVENT_CASE""EVENT_CASE",
            "HRI1_OWNER"."SETTLEMENT""SETTLEMENT",
            "HRI1_OWNER"."RECOVERY""RECOVERY"
      WHERE "CLIENT"."CLIENT_ID" = "EVENT_CASE"."CLIENT_ID"
        AND "EVENT_CASE"."EVENT_CASE_ID" = "SETTLEMENT"."EVENT_CASE_ID"
        AND "SETTLEMENT"."SETTLEMENT_ID" = "RECOVERY"."SETTLEMENT_ID"
        AND "CLIENT"."CLIENT_CODE" <> 'CLIENT  1'
        AND "CLIENT"."MAJOR_CLIENT_ID" in
            (Select major_client_id
               from major_client
              where major_client_code in ('LA', 'PFG'))
      ORDER BY "CLIENT"."CLIENT_NAME"Edited by: user11961230 on Nov 12, 2009 6:57 AM

    @oradba:Hi Thanks for getting bak. Well i have ran the query using PL/SQL Developer tool and yes its mapping to ORA-03001:unimplemented feature. i dont know what the problem is.
    @centinul: well i dont have any views in there.but still cudnt figure out why its throwing tht error
    Thanks
    Edited by: user11961230 on Nov 12, 2009 7:12 AM

  • Solution for error 2356

    Hi, has anyone found a solution for iTunes installation error:2356?
    I noticed a post since Dec last year, and no answers were found.
    Still having trouble installing itunes... sigh

    From http://support.apple.com/kb/TS3694#1669 :
    Check for hardware issues
    Related errors: 1, 3, 10-47, 1002, 1011, 1012, 1014, 1000-1020, 1669.
    Try to restore your iOS device two more times while connected with a cable, computer, and network you know are good. Also, confirm your security software and settings are allowing communication between your device and update servers. If you still see the error message when you update or restore, contact Apple support.

Maybe you are looking for