Bearbeiten nicht versionierter Geodatabase-Daten in PostgreSQL per SQL
Mithilfe von SQL können Sie Daten in der Geodatabase aktualisieren, Daten in die Geodatabase einfügen und Daten aus nicht versionierten Tabellen daraus löschen, falls diese nicht an Geodatabase-Verhalten beteiligt sind. Informationen zu den Datentypen und Geodatabase-Verhalten, die nicht mit SQL bearbeitet werden können, finden Sie unter Welcher Datentyp kann mit SQL bearbeitet werden?.
Alle Daten, die unter der Geodatabase registriert sind, verfügen über ein vom System verwaltetes, eindeutiges ObjectID-Feld (Zeilen-ID), das nicht null ist. Wenn Sie SQL zum Einfügen von Datensätzen in nicht versionierte Tabellen in der Geodatabase verwenden, müssen Sie für die ObjectID einen Einzelwert eingeben.
Um diese Informationen zu erhalten, fragen Sie die ArcSDE-Systemtabelle "sde_table_registry" ab und rufen so die Registrierungs-ID der Tabelle ab, in die Sie einen Datensatz einfügen möchten. Nachdem Sie die Registrierungs-ID erhalten haben, können Sie die entsprechende I-Tabelle der Tabelle identifizieren, da I-Tabellen mit ihrer Business-Tabelle über die Registrierungs-ID verknüpft sind. Die I-Tabelle wird im Schema des Benutzers gespeichert, der die entsprechende Tabelle besitzt.
Beziehen Sie die Funktion "Next_RowID" in eine Anweisung zum Einfügen ein, um das ObjectID-Feld mit dem nächsten gültigen Wert auszufüllen.

Die nächste verfügbare ObjectID ist nicht notwendigerweise die nächste sequenzielle Zahl nach der zuletzt eingefügten ObjectID. ObjectIDs für einige Client-Anwendungen werden in Batches zugewiesen, deshalb ist die nächste verfügbare ObjectID möglicherweise viel höher als die zuletzt verwendete. Auch werden alle nicht verwendeten ObjectIDs aus dem Batch an den Pool verfügbarer Werte zurückgegeben. Das bedeutet, dass die nächste verfügbare ObjectID möglicherweise niedriger als die ist, die Sie zuletzt eingefügt haben.
-
Melden Sie sich über einen SQL-Editor, z. B. psql, bei der Datenbank an.
Melden Sie sich bei der Datenbank als Benutzer an, der über die Berechtigung zum Bearbeiten der Daten verfügt.
-
Verwenden Sie die Funktion "Next_RowID", um das ObjectID-Feld auszufüllen.
In diesem Beispiel ist die Spalte "site_id" das ObjectID-Feld, die Tabelle lautet "outbreak", und die Tabelle ist im hmoot-Schema gespeichert.
INSERT INTO hmoot.outbreak (site_id, med_code,num_affected, shape) VALUES (sde.next_rowid('hmoot', 'outbreak'), 'v-22a', 3, ST_Point('point (12 36))', 12);
- Sie können das Editieren fortsetzen oder die Änderungen an der Datenbank speichern, nachdem Sie das Editieren abgeschlossen haben.