0

So I am building an ArcGIS relational geodatabase; one copy is stored online for users to enter data into and another copy is stored locally for minor processing and then to generate reports. The geodatabase consists of a point feature class that is has a 1:M relationship with a polygon feature class; which then has a 1:1 relationship with a table. I built a model to add new data from the online version onto the local copy (which has to be done weekly) using the Append tool. However, the Global ID field/primary key for each component of the geodatabase is changed during the append process but the foreign key remains the same. So the relationships are now messed up and I can't get the data I need out of the database.

Is there another tool I should be using? Or maybe I need to make a text field and copy the GlobalID before doing the append, and then either copy the correct GlobalID back into the GlobalID field OR restructure the relationship so it's referring to the right field?

  • Shapefiles are NOT "geodatabase" elements. Since shapefiles don't support GUIDs, your first step should be to use file geodatabase for the two feature classes. – Vince Nov 17 '15 at 21:06
  • Perhaps you meant 'feature class' instead of 'shapefile'? Regardless, GUIDs (and FIDs OIDs) are system managed fields, and not suitable for serving as unique IDs within the data since operations on the data can alter the values (as you've discovered). See blogs.esri.com/esri/arcgis/2009/09/28/guids-as-ids for some more info. – Chris W Nov 17 '15 at 21:12
  • I don't think a field of Type=GUID would get messed up, but a field with Type=GlobalID would. In fact GlobalIDs are not editable by you. Copying the ID to a text field before processing should be a fine approach. – John Nov 18 '15 at 1:17
  • @ChrisW: Thank you, I have corrected the terminology. That link was helpful. – D Stone Nov 19 '15 at 12:03
  • @John- You are correct. The fields that change are GlobalIDs, not GUID. I am obviously rather new to creating geodatabases. From my understanding, since GUIDs are not maintained automatically, they are not generated automatically either- is this correct? – D Stone Nov 19 '15 at 12:15
1

You cannot rely on the GUID or objectid fields managed by ArcGIS/ArcSDE for unique record identification. On the online table you can create an identification field managed by you through a database trigger (ON INSERT) that automatically populates such a field whenever a new record is created.

As is not managed by ArcSDE, it won't be changed on append or any other ArcGIS-related operation.

In order to be really safe, copying the original objectid or guid from ArcSDE to another field should be done immediately upon creation of new record. In case you prefer this, you should also do this using an ON INSERT trigger.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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