Insertion d'une valeur dans une colonne d'identifiant global ou GUID dans DB2 à l'aide de SQL

Les types de données d'identifiant global (GlobalID) et GUID contiennent des chaînes de registre constituées de 36 caractères placés entre des accolades. Ces chaînes identifient de manière unique une entité ou une ligne de table dans une géodatabase et entre plusieurs géodatabases. Les identifiants globaux permettent de conserver l'unicité des enregistrements dans des réplicas monodirectionnels et bidirectionnels de géodatabase et dans les données non versionnées utilisées dans les cartes hors connexion. Les GUID peuvent être ajoutés à n'importe quelle table.

Si la table que vous souhaitez mettre à jour fait partie d'une réplication ou de cartes hors connexion ou si elle contient une colonne GUID, vous devez insérer une valeur unique dans la colonne d'identifiant global ou GUID lorsque vous insérez un nouvel enregistrement dans la table à l'aide de SQL. Pour cela, vous pouvez utiliser la fonction sde.next_globalid.

Lorsque vous mettez à jour une table non versionnée qui n'est pas activée pour l'archivage, faites appel à cette fonction pour insérer directement l'identifiant dans la table. Lorsque vous mettez à jour une table non versionnée qui est activée pour l'archivage, faites appel à la fonction pour insérer directement l'identifiant dans la vue d'archive de la table. Lorsque vous mettez à jour une table versionnée, faites appel à la fonction pour insérer une valeur dans la vue versionnée de la table.

Etapes :
  1. Connectez-vous à la base de données à partir d'une invite SQL en tant qu'un utilisateur autorisé à modifier la table.

    Si vous effectuez une mise à jour via une vue versionnée ou d'archive, l'utilisateur doit également détenir des privilèges de modification de la vue.

  2. Lorsque vous insérez un enregistrement, utilisez la fonction sde.next_globalid pour insérer la prochaine valeur d'identifiant global. Comme il s'agit d'une table de géodatabase, elle contient également un ObjectID. Utilisez la fonction sde.next_rowid pour insérer également une valeur au champ ObjectID.
    --Get next ObjectID
    CALL sde.next_rowid('JASON', 'ASSETS', ?, ?, ?);
    
    Value of output parameters
    
    Parameter Name :   O_ROWID
    Parameter Value :  49999
    
    Parameter Name :   O_MSGCODE
    Parameter Value :  0
    
    Parameter Name :   O_MESSAGE
    Parameter Value :  Procedure successfully completed.
    
    Return Status = 1
    
    --Insert record
    INSERT INTO jason.assets (objectid, asset_id, globalid) 
     VALUES (49999, 57, sde.next_globalid);
    
  3. Lorsque vous avez terminé vos modifications, validez-les dans la base de données.

Thèmes connexes

5/10/2014