After creating a feature class, it would be convenient to go back after data input, and make changes to the field ordering (position).
Ted, you are dead on and I can confirm we have done this on tables that are versioned and un-versioned, using archiving and in use by a front end applications, apps built with web-app builder as well as through the Collector app. That all sort of plays to the link Melissa provided on a best practice of making ordering changes on the front-end.
It's useful in a pinch but no substitute for good database design.
True, for us its usually multiple changes made by the business after having signed off on original requirements docs that outlined the design
I'd also like to point out that SQL Server is not providing any special functionality to allow for re-ordering columns.
SSMS Table Designer is bundling a series of steps, making it look like you are just rearranging columns:
1 - creates a new table (tmp_mytable) with column order changes that you made on mytable
2 - grants equivalent user permission to tmp_mytable (e.g. if Bill had select on mytable, it gets granted on tmp_mytable)
3 - inserts into tmp_mytable from mytable
4 - drops mytable
5 - renames tmp_mytable to mytable
This operation requires sufficient space in the data file & transaction log to handle two side-by-side copies of your table. Probably not an issue for a few thousand records, but not something I'd be too keen on doing with millions of records.
So if I did that, any advanced configurations in a feature dataset built on an ObjectID relationship, like Feature Linked Annotation, Topology validations, etc. would most likely be destroyed, since I doubt they would reload the data in such a way that the ObjectIDs are not regenerated.
A straight copy like that at the SQL Server level should preserve all the values from the original table. All ObjectIDs in registered geodatabase objects in SQL Server are maintained through separate tables & stored procedures. Tables that are not registered with the geodatabase may have sequences or other auto-incrementing columns that would have to be handled a bit differently.
But you have touched on an important thing here - manipulating geodatabase objects at the database level could be problematic, depending on what sort of behavior they participate in. This is the same reason why this isn't a simple operation at the dbms level - there are too many potential dependencies that could break or be corrupted.
My two cents worth....
When you create a new feature class/table using ArcMap, at the screen where you can add all the field names and types etc, it is possible to 'Import' the schema from an existing feature class/table, after which you can add extra fields, alter field types, names etc. But, strangely enough, you can't reorder them.
I understand how difficult it can be to re-order fields in an existing feature class (because of various underlying database issues), but at this point in time nothing has been created and we are still defining the schema. It is here that I find it strange that there is no way to reorder the fields - a simple up/down arrow would work here.
For 75% of the changes I make, it would be good enough to rename the old feature class, create a new one - importing the old schema in the process, inserting a field and reordering it before actually creating the new one, then copying the features across etc etc. Yes I can do that with scripting, but that's not really a reason why it couldn't be implemented within Arcmap, is it?
I strongly agree with Paul, I often find my self using arcpy.FCtoFC class and manually reordering the fields in the field map parameter to get the order I want. It would be nice if the I could just reorder the fields using the GUI.
Moreover, if this is considered a good idea, then it should be implemented in ArcGIS Pro, as it would be a shame if it is adopted only in ArcMap.
Angelo C - Esri Australia
That would be nice. It looks like others feel the same way. It's on ideas.esri.com:
Have you tried working with your table in ArcGIS Pro? I am only beginning to play with it, but I have heard it is meant for geoprocessing large data sets, and there is an option in the attribute table window to use field view, and it lets you rename fields, reorder them, etc. I am not sure what is going on in the background or programming, but for us front-end users- wow! I am impressed so far.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.