-->

Current version of data in database has changed si

2020-08-09 06:29发布

问题:

I have a Master Detail form in my Oracle APEX application. When I am trying to update data in this form, I am getting below error.

Current version of data in database has changed since user initiated update process. current row version identifier = "26D0923D8A5144D6F483C2B9815D07D3" application row version identifier = "1749BCD159359424E1EE00AC1C3E3FCB" (Row 1)

I have cleared browser cache and try to update. But it not worked.

How can I solve this?

回答1:

I have experienced similar problem where my detail records set has timestamp fields. By default master detail wizard creates the timestamp fields as date picker type fields. If you set the date format on these, it would resolve the issue.



回答2:

This blog post tries to address this issue on a Tabular Form (I know that's not what the original issue was with, but thought it might be related). It says the same as @sangam does below.

Short version: If you have an updated field that's timestamp datatype, you should set a date/time format.

http://apexbyg.blogspot.com/2015/05/tabular-form-bug.html

My tabular form has a field that's timestamp datatype, but I had already set a date format, so this didn't help me.



回答3:

Here's another possibility, which I discovered was the case in my application.

That would be if the data the original checksum was calculated on is truly different than the pre-update checksum calculation, due to a design-flaw in your query!

In my application, the source for one of the updateable fields was COALESCE(name_calced, name_preferred). In the source table, the person's name could already be loaded in the record by an external process and we save it to one field - name_calced. But the end-user can enter a preferred name, which we wanted to save to the name_preferred field. We wanted to initially populate the displayed, updateable tabular form field with name_calced, if one existed, or name_preferred if the user had already provided a preferred name. Then they could change that value and save it back to the database.

I finally discovered that the Save action threw the error message if name_calced was non-null, but name_preferred was null. I realized that the initial checksum was calculated based on name_calced, but the pre-update checksum was based on name_preferred, so the application thought someone had changed the value in the background and showed the error message.

What I don't understand is how this problem didn't show up in the past 3 years the application has been running in production!

My solution is to make the field source only on name_preferred, which immediately solved this problem. I also think the back-end process will also get changed to pre-populate that table field from name_calced, so the user always sees the base value, if there is one.



回答4:

I just had this issue myself. Now, I realize that tabular forms are deprecated at this time, but I have an application that was developed beforehand and still uses them. This issue occurred and I had to get one of our big guns at Oracle to help me out. I do a lot of DB work and a decent amount of Apex development but I'm more of a Java, WebLogic, etc guy, and I really couldn't figure this one out.

In my case, it turned out to be really simple. One of the columns in my tabular form was a hidden field, generated via a sub query. Being hidden, this column is not editable by the user and should not be part of the MRU update. I had the field set to "Hidden Column (saves states)" and setting its type to "Hidden Column" fixed the issue. So, this leads to sub queries being executed in such a way as to change the checksum for the overall query before hitting submit (save), causing the error.

For those who are continuing to troubleshoot this, look at your query for every field that you have specified and note which columns are editable in the tabular form. All other fields should be set in a way that makes them not save state so that they are not part of the update.



回答5:

I had this error when I had two update processes processing on submit.

My solution was to add a condition to both processing steps. I had forgotten to do this when I made an additional process for Button A, but I never updated Button B to limit it's behaviors.

Navigation: Processing -> Processes -> [Your Process Name] -> Server-side Condition -> When Button Pressed = [Your button Name]



回答6:

In my case I had a column from a secondary table that was not set as Query Only and was being updated! The error would occur trying to save a column not in the table being updated. It took me half a day to figure it out (the column names were the same).



回答7:

I have noticed this error comes when I was working Tabular Form and has disabled one of the form operations i.e. by setting server-side condition to "Never" for add, apply changes (submit) buttons

When I have restored back to its original state, it worked as expected.

In case you have to hide Add/Update button, use some other option.

https://compknowledgebase.blogspot.com/2018/12/oracle-apex-error-current-version-of.html