Definition
"Next_GlobalID" gibt anhand einer in der Geodatabase registrierten Tabelle als Eingabeparameter den nächsten Global-ID-Wert zurück.
Wenn Sie mithilfe von SQL eine Zeile in die Tabelle einfügen, können Sie diesen Wert verwenden.
Das Feld "Globale ID" wird hinzugefügt, sodass die Tabelle Bestandteil der Geodatabase-Replikation oder Offlinekarte ist.
Falls die Eingabetabelle nicht in der Geodatabase registriert ist, wird ein Fehler zurückgegeben.
Syntax
<geodatabase administrator schema>.next_globalid (<table owner>, <table name>)
Bei den meisten Geodatabases lautet das Geodatabase-Administrator-Schema "sde". Im Falle von DBO-Schema-Geodatabases in SQL Server lautet das Schema "dbo", und bei Benutzerschema-Geodatabases in Oracle wird der Name des Benutzerschemas verwendet.
Rückgabetyp
Zeichenfolge
Beispiele
Es folgen einige Beispiele für die Verwendung von "Next_GlobalID" in allen unterstützten Datenbanken.
In dem Beispiel für die einzelnen Datenbanken wird ein Datensatz in die Tabelle "sitings" eingefügt, die im Besitz von "buse" ist. Außerdem wird die Prozedur "Next_RowID" aufgerufen, um einen Wert in das ObjectID-Feld einzufügen, und danach die Prozedur "Next_GlobalID", um einen Wert in das Global-ID-Feld einzufügen.
Db2
Da Geodatabase-Tabellen über ein ObjectID-Feld verfügen, das nicht null ist, müssen Sie zunächst einen Wert abrufen, den Sie in dieses Feld einfügen. Im folgenden Beispiel wird der nächste RowID-Wert für das ObjectID-Feld (698) abgerufen. Anschließend wird ein Datensatz in die Tabelle eingefügt, die den nächsten RowID-Wert und die Funktion "Next_GlobalID" enthält, um einen Wert in das Feld "Globale ID" einzufügen.
--Get the next ObjectID value.
CALL sde.next_rowid('BUSE', 'SITINGS', ?, ?, ?);
Value of output parameters
Parameter Name : O_ROWID
Parameter Value : 698
Parameter Name : O_MSGCODE
Parameter Value : 0
Parameter Name : O_MESSAGE
Parameter Value : Procedure successfully completed.
Return Status = 1
--Insert the ObjectID from the previous statement to the objectid field.
--Use the Next_GlobalID function to insert a value to the globalid field.
INSERT INTO buse.sitings (objectid, globalid, mon_type)
VALUES (
698,
sde.next_globalid,
'golem'
);
The SQL command completed successfully
Oracle
Sie können das Dienstprogramm "Next_GlobalID" der Anweisung zum Einfügen hinzufügen, um den nächsten verfügbaren ID-Wert einzufügen. Im folgenden Beispiel wird ebenfalls das Dienstprogramm "Next_RowID" verwendet, um einen Wert in das ObjectID-Feld einzufügen, das in allen Geodatabase-Tabellen vorhanden ist und ausgefüllt werden muss.
INSERT INTO buse.sitings (objectid, globalid, mon_type) VALUES ( sde.gdb_util.next_rowid('BUSE', 'SITINGS'), sde.gdb_util.next_globalid, 'golem' );
1 row created
PostgreSQL
Sie können die Funktion "Next_GlobalID" der Anweisung zum Einfügen hinzufügen, um den nächsten verfügbaren ID-Wert einzufügen. Im folgenden Beispiel wird ebenfalls die Funktion "Next_RowID" verwendet, um einen Wert in das ObjectID-Feld einzufügen, das in allen Geodatabase-Tabellen vorhanden ist und ausgefüllt werden muss.
INSERT INTO buse.sitings (objectid, globalid, mon_type) VALUES ( sde.next_rowid('buse', 'sitings'), sde.next_globalid(), 'golem' );
Query returned successfully: 1 row affected, 109 ms execution time.
SQL Server
Bei "Next_GlobalID" und "Next_RowID" handelt es sich um gespeicherte Prozeduren, die außerhalb der INSERT-Anweisung ausgeführt werden müssen, um die nächsten ID-Werte abzurufen. Beide Prozeduren sind im Schema des Geodatabase-Administrators gespeichert. Im folgenden Beispiel ist der Geodatabase-Administrator "sde". Die von diesen gespeicherten Prozeduren zurückgegebenen Werte werden in der INSERT-Anweisung verwendet, um die Tabelle "sitings" zu aktualisieren.
--Get the next ObjectID value. DECLARE @oid int EXEC sde.next_rowid 'buse', 'sitings', @oid OUTPUT SELECT @oid "ObjectID value";
ObjectID value 98765
--Get the next global ID value. DECLARE @gid uniqueidentifier EXEC sde.next_globalid @gid OUTPUT SELECT @gid "ID value";
ID value 0D5D0605-8954-4A65-B86C-D2DA96C2D0C5
--Insert a row to the sitings table. INSERT INTO buse.sitings (objectid, globalid, mon_type) VALUES ( 98765, '0D5D0605-8954-4A65-B86C-D2DA96C2D0C5', 'golem'
);