HOW TO

Verwenden von SQL zum Einfügen eines Wertes in eine Global-ID- oder GUID-Spalte in den versionierten Sichten einer Enterprise-Geodatabase in Oracle

Last Published: November 11, 2020

Zusammenfassung

In den folgenden Anweisungen wird beschrieben, wie ein Wert unter Verwendung von SQL (Structured Query Language) für Oracle in eine Global-ID- oder GUID (Globally Unique Identifier)-Spalte in der versionierten Sicht einer Enterprise-Geodatabase eingefügt wird.

Vorgehensweise

Mit den Datentypen "Global ID" und "GUID" werden registrierungsartige Zeichenfolgen aus 36 Zeichen gespeichert, die in geschweifte Klammern eingeschlossen sind. Mit diesen Zeichenfolgen werden Features oder Tabellenzeilen innerhalb einer Geodatabase oder Geodatabase-übergreifend eindeutig gekennzeichnet. Dies dient der Nachverfolgung von Features bei unidirektionalen und bidirektionalen Geodatabase-Replikationen und wird in Beziehungen oder in Anwendungen verwendet, die GUIDs erfordern.

Wenn bei einer Beziehung ein Feld "Globale ID" der Ursprungsschlüssel ist, muss der Zielschlüssel ein GUID-Feld sein. Fügen Sie einer Feature-Class in ArcCatalog globale IDs hinzu, indem Sie mit der rechten Maustaste auf ArcCatalog klicken und anschließend auf "Globale IDs hinzufügen" klicken. In der Geodatabase werden die Werte automatisch verwaltet. Erstellen Sie das GUID-Feld in ArcCatalog, und verwalten Sie seine Werte.

Geben Sie, wenn Sie unter Verwendung von SQL eine Zeile in eine versionierte Sicht mit einer Global-ID-Spalte einfügen, einen eindeutigen GUID-Wert für die Global-ID-Spalte an.

Hinweis: Weitere Informationen zu globalen IDs, GUIDs und zu der Geodatabase-Replikation finden Sie in der ArcGIS Desktop-Hilfe im Abschnitt mit den Referenzinformationen.
Die folgenden Beispiele beziehen sich auf Oracle. Die Vorgehensweise ist aber bei anderen unterstützten Datenbanken ähnlich.
  1. Führen Sie, während Sie als SDE-Benutzer angemeldet sind, die folgenden SQL-Anweisungen aus, um im relationalen Datenbankmanagementsystem (RDBMS) eine Funktion zum Generieren einer GUID zu erstellen.

    Mit dieser Funktion wird unter Verwendung der Oracle-Funktion "SYS_GUID" eine GUID erstellt und das Ergebnis im unkomprimierten oder Standard-GUID-Format von Microsoft ausgegeben.
CREATE OR REPLACE FUNCTION GDB_GUID RETURN NCHAR IS guid NCHAR (38); BEGIN guid := upper(RAWTOHEX(SYS_GUID())); RETURN '{'||substr(guid,1,8)||'-'||substr(guid,9,4)||'-'||substr(guid,13,4)||'-'||substr(guid,17,4)||'-'||substr(guid,21,12)||'}'; END; /
  1. Erteilen Sie für die Funktion Berechtigungen als SDE-Benutzer, um die Funktion auszuführen, während Sie als ein anderer als ein SDE-Benutzer angemeldet sind.
grant execute on gdb_guid to public;
  1. Erstellen Sie die versionierte Sicht.
"geodatabase administrator" table -o create_mv_view -T parcels_v -t parcels -i <port> -u <user> -p <password>
Hinweis: Weitere Informationen zum Erstellen und Verwenden versionierter Sichten in einer Enterprise-Geodatabase finden Sie in der ArcGIS Desktop-Hilfe.
  1. Ermitteln Sie die "REGISTRATION_ID" der versionierten Feature-Class, aus der die Sicht erstellt wurde.
select registration_id,table_name from sde.table_registry where table_name='PARCELS'; REGISTRATION_ID TABLE_NAME --------------- --------------------- 113 PARCELS
  1. Ermitteln Sie bei einem räumlichen Geometrietyp die Raumbezugs-ID (SRID) der versionierten Feature-Class, aus der die Sicht erstellt wurde.
select srid from sde.st_geometry_columns where table_name='PARCELS' and owner='USER1'; SRID ---------- 7
  1. Erstellen Sie eine neue Version, um die versionierte Sicht zu bearbeiten. Wenn Sie eine vorhandene Version verwenden, überspringen Sie diesen Schritt, und fahren Sie mit dem nächsten fort.

    Im Gegensatz zur Bearbeitung versionierter Daten in einer ArcGIS-Editiersitzung findet bei dieser Bearbeitung kein interner Versionsabgleich statt. Es wird daher dringend empfohlen, versionierte Sichten nicht zum Bearbeiten der Standardversion oder von Versionen zu verwenden, bei denen eine gleichzeitige Bearbeitung oder ein Versionsabgleich durch andere Benutzer stattfindet, weil Konflikte nicht erkannt werden. Erstellen Sie stattdessen eine Version speziell für die Bearbeitung mit versionierten Sichten.

    Gehen Sie wie folgt vor, um eine eine neue Version zu erstellen:
    --Create a new version. variable mvvers nvarchar2(97); exec :mvvers := 'PARCELS_42'; exec sde.version_user_ddl.create_version('SDE.DEFAULT',:mvvers,sde.version_util.C_take_name_as_given,sde.version_util.C_version_public,'Parcels WorkOrder 42 Version');
  2. Fügen Sie als Besitzer der versionierten Tabelle einen Datensatz in die versionierte Sicht ein.
Hinweis: Weitere Informationen zum Bearbeiten versionierter Sichten in einer Enterprise-Geodatabase finden Sie in der ArcGIS Desktop-Hilfe.
Im folgenden Beispiel:
ist "USER1" der Besitzer der versionierten Tabelle und "113" die in Schritt 4 oben ermittelte "registration_id".

Bei räumlichen Geometrietypen ist der Wert der räumlichen Spalte von dem Geometrietyp abhängig, der eingefügt wird sowie von den Punkten, die eingefügt werden sollen. "7" ist die SRID der versionierten Tabelle, die in Schritt 5 oben ermittelt wurde.
Hinweis: Weitere Informationen zum Typ "ST_GEOMETRY" und zum Einfügen der Geometrie in einer Enterprise-Geodatabase finden Sie in der ArcGIS Desktop-Hilfe.
--Set the version to edit. exec sde.version_util.set_current_version('USER1.PARCELS_42'); --Start the edit session. exec sde.version_user_ddl.edit_version('USER1.PARCELS_42',1); --Perform the desired insert. --For Spatial GEOMETRY Types a shape may be inserted. insert into parcels_v (objectid,globalid,shape) values (sde.version_user_ddl.next_row_id('USER1',113),sde.GDB_GUID,(sde.st_polygon ('polygon ((10000 520000, 100008889 55000, 1045545983 234280934, 10000 520000))',7))); --For Non-Spatial GEOMETRY Types (Binary, LOB, etc.) a NULL shape MUST be inserted: insert into parcels_v (objectid,globalid,shape) values (sde.version_user_ddl.next_row_id('USER1',113),sde.GDB_GUID, NULL); --Stop the edit session. exec sde.version_user_ddl.edit_version('USER1.PARCELS_42',2); --Commit the edit. commit;

Artikel-ID:000009340

Hilfe von ArcGIS-Expert*innen erhalten

Technischen Support kontaktieren

Die Esri Support-App herunterladen

Zu den Download-Optionen

Zugehörige Informationen

Weitere Informationen zu diesem Thema erkunden