Bearbeiten nicht versionierter Geodatabase-Daten in Oracle 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. Unter Welcher Datentyp kann mit SQL bearbeitet werden? finden Sie Informationen zu den Typen von Daten und Geodatabase-Verhalten, die Sie nicht per SQL bearbeiten können.
Alle Daten, die unter der Geodatabase registriert sind, verfügen über eine vom System verwaltete, eindeutige Objekt-ID-Spalte (Zeilen-ID), die 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 Objekt-ID einen Einzelwert eingeben.
Verwenden Sie die Funktion "next_row_id" aus dem Paket "sde.version_user_ddl", um einen neuen Einzelwert für die Objekt-ID zu erzeugen.
Die Funktion "next_row_id" verwendet zwei Parameter: Besitzer und Registrierungs-ID. Der Besitzer ist der Name des Benutzers, der die Tabelle besitzt. Die Registrierungs-ID stammt aus der ArcSDE-Systemtabelle TABLE_REGISTRY. Mithilfe des Namens des Tabellenbesitzers und der Registrierungs-ID können Sie eine SQL-Anweisung erstellen, um die Objekt-ID-Spalte aufzufüllen.
![Hinweis Hinweis](rsrc/note.png)
Die nächste verfügbare Objekt-ID muss nicht zwingend die nächste Zahl der Folge nach der letzten eingefügten Objekt-ID sein. Objekt-IDs für einige Client-Anwendungen werden in Batches zugewiesen. Daher kann die nächste verfügbare Objekt-ID ggf. deutlich höher als die zuletzt verwendete sein. Alle nicht verwendeten Objekt-IDs aus dem Batch werden an den Pool der verfügbaren Werte zurückgegeben. Dies bedeutet, dass der nächste verfügbare Objekt-ID-Wert auch eine kleinere Zahl als beim letzten Einfügevorgang sein kann.
-
Melden Sie sich über einen SQL-Editor wie SQL*Plus an der Datenbank an.
Melden Sie sich bei der Datenbank als Benutzer an, der über die Berechtigung zum Bearbeiten der Daten verfügt.
-
Fragen Sie die Systemtabelle TABLE_REGISTRY ab, um die Registrierungs-ID der Business-Tabelle zu ermitteln, in die eine Zeile eingefügt werden soll.
In diesem Beispiel ist die zu bearbeitende Tabelle die Business-Tabelle der STREAMS-Feature-Class, und der Besitzer ist ENG2.
SELECT registration_id FROM sde.table_registry WHERE table_name = 'STREAMS' and owner = 'ENG2'; REGISTRATION_ID 131
Die Registrierungs-ID für die Tabelle ENG2.STREAMS lautet 131.
-
Fügen Sie die Funktion "sde.version_user_ddl.next_row_id" zusammen mit dem Besitzernamen und der Registrierungs-ID in die INSERT-Anweisung ein, um den nächsten verfügbaren Wert in die Objekt-ID-Spalte einzufügen.
In diesem Beispiel wird ein "ST_Geometry"-Liniensegment in die STREAMS-Feature-Class eingefügt.
INSERT INTO eng2.streams (OBJECTID,NAME,SHAPE) VALUES (sde.version_user_ddl.next_row_id('ENG2', 131), 'TRANQUIL', sde.ST_GEOMETRY('linestring (750 150, 750 750)', 4) );
- Sie können das Editieren fortsetzen oder die Änderungen an der Datenbank speichern, nachdem Sie das Editieren abgeschlossen haben.