I'm considering switching some of my tables in an Oracle enterprise geodatabase from versioned to unversioned.

The pros of having unversioned tables would be:

But of course, there are a few cons:

  • Users can't create and edit named versions. This isn't a huge problem for me, because my organization ultimately doesn't use versioning technology properly anyway. We don't really do long-transaction editing, which is what versioning is intended for. Instead, we just do short transactions on the default version (without creating separate versions).

  • It's only possible to edit either registered or unregistered tables in an edit session. Not both. So users have to stop editing and switch between edit modes to edit one kind of data or the other.

  • It's not possible to undo or redo edits in an edit session on unregistered tables.

This last one is a potential deal breaker. It's really quite infuriating to not be able to undo an edit in an edit session. Sure, the user can stop editing, and not save the changes, but then they lose all the unsaved edits in that edit session.

Is there a way to undo/redo edits on unregistered tables in ArcGIS Desktop?

  • 2
    Nope. Versioning is the only way to provide undo.
    – Vince
    Jul 27, 2017 at 22:25
  • Don't see how that would help.
    – Vince
    Jul 27, 2017 at 22:50
  • 1
    you also loose your Q\A functionality, unless you're not worried about tracking edits and your editors are not known to make mistakes
    – NULL.Dude
    Jul 28, 2017 at 12:49
  • @Joe Good point. I'm guessing that you're referring to reconciling conflicts? In that case, we're OK with losing that functionality. We haven't really had a problem with conflicting edits, and haven't had a need to check edits through versioning.
    – User1974
    Jul 28, 2017 at 13:11
  • @Vince Regarding your comment from a few years ago: "Versioning is the only way to provide undo.". It sounds like that might change in the future: Pro Roadmap - Non-versioned Editing: “Ability to undo and/or discard edits before committing”.
    – User1974
    Mar 30, 2022 at 16:13

5 Answers 5


The best resource I've come across to provide an answer is Esri's Not registered as versioned or unregistering data as versioned

There are no ways I'm aware of redoing/undoing edits in unregistered tables. However, this resource provides further insight as to possibly finding a solution.

....As mentioned above, your data is initially not registered as versioned. If it remains in this state, you can perform nonversioned edits, and you can create a topology, network dataset, or geometric network.

If you've already registered a feature class as versioned and need to perform one of the above operations, you must unregister the feature class as versioned. When you unregister a feature class, the delta tables are dropped from the database—that means all versioned edits that were made but not posted will be lost. To prevent these edits from being lost, either compress all the edits to the base table before unregistering the data or compress them to the DEFAULT version from the Unregister As Versioned dialog box. The software prompts you to compress the edits to the base table when you attempt to unregister a feature class as versioned.

You can access the Unregister As Versioned command from the dataset context menu.

To avoid the need to unregister feature classes, try to apply all topology, network dataset, and geometric network behavior to your geodatabase before you register data. Test the topology, network dataset, and geometric network in a file geodatabase or on a development server to ensure that you are not missing any rules. This can save you from having to unregister feature classes later in production.


I often wonder if someone has tried the following.

(This response will probably show how much I don't know about where ESRI's technology have moved to in the past 5 years.)

  1. Leave the Enterprise GeoDatabase as a plain-vanilla short transaction DB.
  2. Create a File GeoDatabase. Smart editing tools are available including undo/redo.
  3. Extract the data to be edited into the File GeoDatabase and do all ones editing in it: create versions, throw away etc.
  4. When merging final version back to DB, check for differences, resolve in FGDB and then do final commit.

Enterprise DB is protected from specific user scenarios, long transactions, and presents current state to all business applications. All other non-ESRI apps can see the current state. The only issue is if two people edit same business objects but I wonder how much this occurs and whether it is sufficiently common to cause problems. If so, just edit versioned Enterprise GeoDatabase.

  • I like it. I'm not too worried about the conflicting edits thing.
    – User1974
    Nov 1, 2017 at 0:50

ESRI's GeoDatabase versioning, must be enabled for the ArcGIS/ArcEditor smart data editing tools to be enabled. Whether you need to use versioning or not is immaterial: if you want the smart editing tools you have to use it, otherwise you have to revert to standard SQL transactional editing.

I don't have a problem with that approach as there is probably a deep architectural and functional integration through the ESRI stack which makes it difficult to enable only one element.

Or questioner doesn't appear to want or need long transactions (crossing multiple days) or multiple versions (per user or per a group of editors). They simply need to all the user to create multiple versions within a single session and, before committing their edits, chose the one they want.

For GIS people, with GIS front-end software (qGIS, ESRI, Autodesk, MapInfo etc) there is little available. Mainly because of the lack of a consistent API with underlying database management (SQL based) from the main database players.

Oracle provides Workspace Manager which is supported by Autodesk and ESRI; Microsoft's new Temporal Tables has no GIS vendor support that I know of.

If the capabilities of Oracle's WorkSpace Manager and ESRI's GeoDatabase versioning are a universal requirement for GIS people, then we would have seen standardisation or an open source project (eg GeoServer, PostGIS, etc etc) that promoted a cross-database solution: but we have not.

Finally, one issue I have with ESRI's Versioned GeoDatabasee is the lack of availability of a "current view" capability. That is, the database itself should provide any user/application that accesses the GeoDatabase a consistent view of the data at the current point in time. From what I understand user versions are kept in delta tables with reconciliation only back to the base when requested. I have heard of customer sites where the commit back to base had never happened with the current version in the main table being long out of date.

One of ESRI's weaknesses appears to be understanding that their GeoDatabase should make all the data it manages (eg code tables) publically available to all clients and not just their own. And that often a GeoDatabase should be capable of being configured to work with a pre-existing database model (and not have to build it from scratch using ESRI GeoDatabase design tools).

If I have mischaracterised what ESRI GeoDatabase does, please let me know.



Is there a way to undo/redo edits on unregistered tables in ArcGIS Desktop?


no. Before editing take a backup of the data then perform your edits.


If you are familiar with database manipulation you can create a table1_history the gets populated through triggers.

If delete or update happened to the table1, table1_history gets populated the field of geometry,time_and_date,type_of_action, and other attribute of your choice.

Then if you would like to undo changes of certain objects on a certain date you can copy paste from table1_history to table1.

For example something similar i use for tracking changes of my user but without geometry field, just tracking:

trigger PARCELE_L_FID before insert or delete or update on PARCELE_L for each row  DECLARE  STABLE varchar2(40); NTBID number; SUID varchar2(40); SACT varchar2(20); S1 varchar2(40); S2 varchar2(40); ST varchar2(1); BEGIN  INSERT INTO USER_AUDIT(TABLE_NAME, TABLE_ID, ACT_TYPE, ACT_USER, USER_TYPE) VALUES(STABLE, NTBID, SACT, SUID, ST); END;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.