Was ist eine ObjectID?
Als "ObjectID" wird eine eindeutiges Feld vom Typ "Integer" ohne Nullwerte bezeichnet, die verwendet wird, um Zeilen in Tabellen in einer Geodatabase eindeutig zu identifizieren. ObjectIDs sind auf 32-Bit-Werte beschränkt, die einen Maximalwert von 2.147.483.647 speichern.
Tabellen, die mit ArcGIS oder außerhalb von ArcGIS erstellt und dann bei der Geodatabase registriert werden, wird automatisch ein ObjectID-Feld hinzugefügt. Die Werte in diesem Feld werden von ArcGIS verwaltet. Die ObjectID wird von ArcGIS für Operationen wie das Scrollen, Anzeigen von Auswahlsätzen und das Ausführen von Identifizierungsvorgängen an Features verwendet.

Da es bei einem Großteil der ArcGIS for Desktop-Funktionalität erforderlich ist, dass die ObjectID eindeutig ist, müssen Sie sicherstellen, das ObjectID-Werte beim direkten Arbeiten mit der Datenbank außerhalb von ArcGIS nicht dupliziert werden. Wenn Sie z. B. Sichten mit einer Eins-zu-vielen-Beziehung erstellen, besteht die Möglichkeit, dass ObjectIDs dupliziert werden. Dies kann bei Funktionen in ArcGIS for Desktop zu inkonsistentem Verhalten führen.
Wann wird einer Tabelle eine ObjectID hinzugefügt?
Es gibt mehrere Möglichkeiten, wann einer Tabelle eine ObjectID hinzugefügt wird:
- Ein von ArcGIS verwaltetes ObjectID-Feld wird jeder mit ArcGIS erstellten Tabelle automatisch hinzugefügt.
- Wenn Sie eine Tabelle ohne qualifizierendes Feld bei einer Geodatabase registrieren, fügt die Geodatabase der Tabelle ein weiteres Feld hinzu, das den Anforderungen an eine ObjectID entspricht, und gibt ihm den Namen "OBJECTID". Wenn die Tabelle bereits eine Spalte mit dem Namen "OBJECTID" enthält, fügt die Geodatabase eine Spalte mit dem Namen "OBJECTID_1" hinzu.
- Wenn Sie eine Tabelle ohne qualifizierendes Feld (Ganzzahl oder Null) bei einer Geodatabase registrieren, kann die vorhandene Spalte als ObjectID verwendet werden.
Hinweis:
Wenn das vorhandene qualifizierende Feld von der Datenbank verwaltet wird – z. B. wenn es eine Identitätseigenschaft in SQL Server oder eine Sequenzeigenschaft in PostgreSQL aufweist – wird die Datenbankverwaltungseigenschaft aus dem Feld gelöscht, wenn die Tabelle bei der Geodatabase registriert wird. Nach der Registrierung bei der Geodatabase behält ArcGIS die Werte im qualifizierenden ObjectID-Feld bei.
- Wenn Sie die Tabelle mit dem Befehl "sdetable" oder "sdelayer" bei ArcSDE registrierten, haben Sie zu diesem Zeitpunkt eine Zeilen-ID-Spalte angegeben. Ferner haben Sie angegeben, ob diese Spalte von ArcSDE oder Ihnen (dem Benutzer) verwaltet werden soll.
Wenn Sie die Tabelle anschließend bei der Geodatabase registrieren, wird die Zeilen-ID der Tabelle für die ObjectID verwendet, wenn Sie eine von ArcSDE verwaltete Zeilen-ID-Spalte beim Registrieren bei ArcSDE angegeben haben. Wenn Sie stattdessen eine vom Benutzer verwaltete Zeilen-ID angegeben haben, fügt die Geodatabase eine neue ObjektID-Spalte hinzu, wenn Sie die Tabelle anschließend bei der Geodatabase registrieren. Diese neue ObjektID-Spalte ersetzt die Spalte, die Sie beim Registrieren der Tabelle bei ArcSDE angegeben haben. Außerdem wird der Datentyp der benutzerdefinierten Zeilen-ID in einen Long-Integer-Wert geändert.
Daher sollten Sie die von ArcSDE verwaltete Zeilen-ID registrieren, wenn Sie die Tabelle nach dem Registrieren bei ArcSDE bei der Geodatabase registrieren.