Next_GlobalID

Définition

La fonction Next_GlobalID utilise une table inscrite auprès de la géodatabase comme paramètre en entrée et renvoie la prochaine valeur d'identifiant global.

Vous pouvez utiliser cette valeur lorsque vous insérez une ligne dans la table en utilisant le langage SQL.

Le champ d'identifiant global est ajouté pour que la table puisse participer à la réplication de géodatabase ou à l'utilisation de cartes hors connexion.

Vous pouvez utiliser cette valeur lorsque vous insérez une ligne dans la table en utilisant le langage SQL.

Une erreur est renvoyée si la table en entrée n'est pas enregistrée avec la géodatabase.

Syntaxe

<geodatabase administrator schema>.next_globalid (<table owner>, <table name>)

Dans la plupart des géodatabases, la structure de l'administrateur de géodatabase est la structure sde. Cependant, dans les géodatabases de structure dbo de SQL Server la structure est dbo et dans les géodatabases de structure utilisateur Oracle, la structure est le nom de la structure utilisateur.

Type de retour

Chaîne

Exemples

Les exemples suivants illustrent l'utilisation de la fonction Next_GlobalID dans chaque base de données la prenant en charge.

L'exemple fourni pour chaque base de données insère un enregistrement dans la table sitings détenue par buse, appelle la procédure Next_RowID pour insérer une valeur dans le champ ObjectID, puis la procédure Next_GlobalID pour insérer une valeur dans le champ d'identifiant global.

DB2

Etant donné que les tables de géodatabase incluent un champ ObjectID non nul, vous devez d'abord obtenir une valeur qui sera insérée dans ce champ. Dans l'exemple suivant, la prochaine valeur RowID est obtenue pour le champ ObjectID (698), puis un enregistrement est inséré dans la table. Cet enregistrement inclut la prochaine valeur RowID et la fonction Next_GlobalID permettant d'insérer une valeur dans le champ d'identifiant global.

--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

Vous pouvez inclure l'utilitaire Next_GlobalID dans l'instruction INSERT pour insérer la prochaine valeur d'identifiant disponible. L'exemple suivant utilise également l'utilitaire Next_RowID pour insérer une valeur dans le champ ObjectID présent dans toutes les tables de géodatabase. Il est obligatoire de le renseigner.

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

Vous pouvez inclure la fonction Next_GlobalID dans l'instruction INSERT pour insérer la prochaine valeur d'identifiant disponible. L'exemple suivant utilise également la fonction Next_RowID pour insérer une valeur dans le champ ObjectID présent dans toutes les tables de géodatabase. Il est obligatoire de le renseigner.

RemarqueRemarque :

Pour utiliser la fonction Next_GlobalID dans PostgreSQL, vous devez avoir installé le module contrib uuid-ossp de PostgreSQL dans la base de données dans laquelle la géodatabase est stockée.

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

Next_GlobalID et Next_RowID sont des procédures stockées qui doivent être exécutées en dehors de l'instruction INSERT pour obtenir les prochaines valeurs d'identifiant. Les deux procédures sont stockées dans la structure de l'administrateur de géodatabase. Dans l'exemple suivant, l'administrateur de géodatabase est sde. Les valeurs renvoyées par les procédures stockées sont utilisées dans l'instruction INSERT pour mettre à jour la table sitings.

--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'
 );
AstuceAstuce:

si vous ne souhaitez pas obtenir la prochaine valeur globalID avant de l'insérer dans la table, vous pouvez utiliser la fonction newid() de SQL Server directement dans l'instruction INSERT, comme illustré à la rubrique Insertion d'une valeur dans une colonne d'identifiant global dans SQL Server à l'aide de SQL.

Thèmes connexes

5/10/2014