Insertion d'une valeur dans une colonne d'identifiant global ou GUID dans Oracle avec 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 bidirectionnels et monodirectionnels de géodatabase. Les GUID peuvent être ajoutés à n'importe quelle couche.

Par conséquent, si la table que vous souhaitez mettre à jour fait partie d'une réplication ou 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 avec SQL. Pour ce faire, appelez l'utilitaire sde.version_user_ddl.retrieve_guid. Si la table que vous mettez à jour est versionnée, utilisez l'utilitaire sde.version_user_ddl.retrieve_guid pour modifier une vue multi-versionnée de la table avec SQL.

ConseilConseil :

Vous pouvez ajouter des identifiants globaux à une classe d'entités dans la fenêtre Catalogue en cliquant avec le bouton droit de la souris sur le jeu de données, puis en choisissant Ajouter les ID globaux. La géodatabase conserve automatiquement ces valeurs lors de la mise à jour avec ArcGIS.

Étapes :
  1. Si vous mettez à jour une table versionnée, ouvrez une invite de commande MS-DOS ou shell et exécutez la commande sdetable pour créer une vue multi-versionnée.

    Reportez-vous à la rubrique Création de vues multi-versionnées pour en savoir plus.

  2. Ouvrez un éditeur SQL, tel que SQL*Plus.
  3. Connectez-vous à la base de données avec un nom d'utilisateur autorisé à modifier la table.
  4. Si la table ou la table sur laquelle la vue est basée contient une colonne ST_Geometry, interrogez la table ST_GEOMETRY_COLUMNS pour rechercher l'identifiant de référence spatiale (SRID) de la table.
    SELECT srid 
    FROM sde.st_geometry_columns 
    WHERE table_name='MYTABLE'
    AND owner='USER22'; 
    
    SRID 
    ---------- 
    4
    

    Les enregistrements que vous insérez dans cette vue ou table doivent utiliser ce SRID.

  5. Si vous mettez à jour une table versionnée, suivez les instructions de la rubrique Mise à jour de données versionnées dans Oracle à l'aide de vues multi-versionnées et de SQL pour créer une version pour la mise à jour, définir la version, puis démarrer une session de mise à jour. Si vous mettez à jour une table non versionnée, passez à l'étape suivante.
  6. Lorsque vous insérez un enregistrement, utilisez l'utilitaire sde.version_user_ddl.retrieve_guid pour insérer la prochaine valeur d'identifiant global ou de GUID.

    Dans cet exemple, un enregistrement est inséré dans la vue multi-versionnée, mytable_mv. La table contient une colonne ST_Geometry et utilise le SRID obtenu à l'étape 4.

    INSERT INTO mytable_mv (globalid,shape) 
    VALUES
    (sde.version_user_ddl.retrieve_guid,(sde.st_polygon
    
    ('polygon ((10000 520000, 100008889 55000, 1045545983 234280934,
    10000 520000))',4)));
    
  7. Lorsque vous avez terminé vos modifications, validez-les dans la base de données.
  8. Une fois la mise à jour terminée, arrêtez la session de mise à jour comme le décrit la rubrique Mise à jour de données versionnées dans Oracle à l'aide de vues multi-versionnées et de SQL s'il s'agissait d'une table versionnée.

3/6/2012