Mise à jour de données non versionnées de géodatabase dans Oracle avec SQL

Vous pouvez utiliser SQL pour mettre à jour, insérer des données et supprimer des données de tables non versionnées dans la géodatabase si elles ne participent pas au comportement de la géodatabase. Reportez-vous à la rubrique Type de données pouvant être modifié avec SQL pour plus d'informations sur les types de données et de comportement de géodatabase que vous ne pouvez pas modifier avec SQL.

Toutes les données enregistrées avec la géodatabase possèdent une colonne d'identifiant d'objet (ID de ligne) gérée par le système, unique et non nulle. Lorsque vous utilisez SQL pour insérer des enregistrements dans des tables non versionnées de la géodatabase, vous devez fournir une valeur unique pour la colonne d'identifiant d'objet.

Utilisez la fonction next_row_id du paquetage sde.version_user_ddl pour générer une nouvelle valeur unique pour l'identifiant d'objet.

La fonction next_row_id utilise deux paramètres : owner et registration_id. Le propriétaire (owner) est le nom de l'utilisateur qui possède la table. L'ID d'enregistrement (registration_id) provient de la table système TABLE_REGISTRY d'ArcSDE. Avec le nom du propriétaire de la table et l'ID d'enregistrement, une instruction SQL peut être créée pour renseigner la colonne d'identifiant d'objet.

RemarqueRemarque :

L'identifiant d'objet disponible suivant n'est pas nécessairement le prochain nombre séquentiel qui suit le dernier identifiant d'objet inséré. Pour certaines applications clientes, les identifiants d'objet sont attribués par lots. Ainsi, l'identifiant d'objet disponible suivant peut correspondre à des nombres beaucoup plus élevés que le dernier que vous avez utilisé. De plus, les identifiants d'objet inutilisés du lot sont renvoyés dans le groupe des valeurs disponibles. Par conséquent, la valeur du prochain identifiant d'objet disponible peut en réalité être un nom inférieur à celui que vous avez inséré en dernier.

Étapes :
  1. Connectez-vous à la base de données à partir d'un éditeur SQL, tel que SQL*Plus.

    Connectez-vous à la base de données avec un nom d'utilisateur autorisé à modifier les données.

  2. Interrogez la table système TABLE_REGISTRY pour déterminer l'ID d'enregistrement de la table métier à laquelle un enregistrement doit être inséré.

    Dans cet exemple, la table à modifier est la table métier de la classe d'entités STREAMS et le propriétaire est ENG2.

    SELECT registration_id 
    FROM sde.table_registry 
    WHERE table_name = 'STREAMS' and owner = 'ENG2';
    
    REGISTRATION_ID
    131
    

    L'ID d'enregistrement de la table ENG2.STREAMS est 131.

  3. Incluez la fonction sde.version_user_ddl.next_row_id avec le nom du propriétaire et ID d'enregistrement dans l'instruction INSERT pour insérer la prochaine valeur disponible dans la colonne d'identifiant d'objet.

    Dans cet exemple, un segment de ligne ST_Geometry est inséré dans la classe d'entités STREAMS.

    INSERT INTO eng2.streams (OBJECTID,NAME,SHAPE) VALUES
    (sde.version_user_ddl.next_row_id('ENG2', 131), 
    'TRANQUIL', 
    sde.ST_GEOMETRY('linestring (750 150, 750 750)', 4) 
    );
    
    
  4. Vous pouvez continuer la mise à jour ou, si vous avez terminé, valider vos modifications dans la base de données.

Rubriques associées


3/6/2012