Что такое ObjectID?
ObjectID – это поле уникальных целочисленных уникальных значений (не NULL), используемых для однозначной идентификации строк в таблицах базы геоданных. Значения ObjectID могут быть только 32-разрядными и не могут быть больше 2,147,483,647.
В таблицы, которые были созданы в ArcGIS, или которые были созданы вне ArcGIS, а затем зарегистрированы в базе геоданных, автоматически добавляется поле ObjectID. Значения этого поля управляются ArcGIS. ObjectID используется в ArcGIS для прокрутки и вывода наборов выборки, а также выполнения операций идентификации для объектов.

Так как большинство функций ArcGIS for Desktop требует уникальности ObjectID, необходимо убедиться в отсутствии повторяющихся значений в ObjectID при работе напрямую с базой данных вне ArcGIS. Например, при создании видов со связями типа один-ко-многим есть вероятность продублировать ObjectID. Это приведет к некорректному поведению функций ArcGIS for Desktop.
Когда идентификатор ObjectID добавляется в таблицу?
Существует несколько способов добавления идентификатора ObjectID в таблицу:
- Управляемое ArcGIS поле ObjectID автоматически добавляется в каждую таблицу, созданную в ArcGIS.
- Если в базе геоданных регистрируется таблица, которая не имеет поля идентификатора, база геоданных добавляет другое поле в таблицу, которая удовлетворяет требованиям идентификатора objectID, и дает ему имя OBJECTID. Если таблица уже содержит столбец с именем OBJECTID, то база геоданных добавляет столбец с именем OBJECTID_1.
- Если вы регистрируете таблицу в базе геоданных, и она содержит поле идентификатора (integer, not null), то оно может использоваться как ObjectID.
Примечание:
Если имеющееся поле идентификатора управляется базой данных, например, когда оно имеет свойство Identity в SQL Server или свойство Sequence в PostgreSQL, то поддерживаемое базой данных свойство будет удалено у поля при регистрации таблицы в базе геоданных. После регистрации в базе геоданных значения в идентифицирующем поле ObjectID управляются в ArcGIS.
- Если таблица регистрируется в ArcSDE с помощью команды sdetable или sdelayer, вы указываете при этом столбец идентификатора строки. Вы также указываете, будет ли столбец управляться ArcSDE или вами (управление пользователем).
При последующей регистрации таблицы в базе геоданных для идентификатора ObjectID используется идентификатор строки таблицы, если вы указали управляемый ArcSDE столбец идентификатора строки, когда регистрировали в ArcSDE. Если вместо этого идентификатор строки управляется пользователем, то база геоданных добавляет новый столбец ObjectID при последующей регистрации в ней таблицы. Этот новый столбец ObjectID заменяет столбец, указанный при регистрации таблицы в ArcSDE. Он также изменяет тип данных пользовательского идентификатора строки на длинное целое (long integer).
Поэтому если вы собираетесь зарегистрировать таблицу в базе геоданных после ее регистрации в ArcSDE, необходимо зарегистрировать идентификатор строки в виде идентификатора, который будет управляться в ArcSDE.