Mise à jour de données non versionnées de géodatabase dans Informix 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. Consultez la rubrique Type de données pouvant être modifié avec SQL pour plus d'informations sur les types de données et comportements de géodatabase que vous ne pouvez pas modifier avec SQL.

RemarqueRemarque :

Si la table non versionnée que vous souhaitez mettre à jour avec SQL est activée pour l'archivage, vous devez mettre à jour la vue d'archive de la table plutôt que la table elle-même. La vue mettra automatiquement à jour certains champs gérés par ArcGIS. Pour plus d'informations, reportez-vous à la rubrique Présentation d'une vue d'archive et aux rubriques associées.

Toutes les données enregistrées avec la géodatabase possèdent un champ ObjectID (ID de ligne) géré par le système, unique et non nul. 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 l'identifiant ObjectID. Vous pouvez utiliser la fonction Next_Row_ID pour insérer une valeur au champ ObjectID à l'aide de SQL.

Ces instructions expliquent la procédure de mise à jour, ligne par ligne, dans une table non versionnée, ainsi que la procédure d'insertion d'un ObjectID. Vous écrirez probablement une routine ou un programme client pour récupérer des identifiants ObjectID et mettre à jour vos données.

Etapes :
  1. Connectez-vous à la base de données à partir d'un éditeur SQL, tel que I-SQL.

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

  2. Interrogez la table table_registry pour trouver l'ID d'enregistrement et le propriétaire de la table dans laquelle vous souhaitez insérer un enregistrement.

    Dans cet exemple, l'ID d'enregistrement et le nom du propriétaire de la table factories sont renvoyés.

    SELECT owner,registration_id,table_name
     FROM sde.table_registry
     WHERE table_name='factories';
    
    owner    registration_id    table_name
    editor1         7           factories
    
  3. Connectez-vous pour exécuter la fonction next_row_id et obtenir la prochaine valeur d'identifiant de ligne disponible.
  4. Exécutez la fonction next_row_id. Cette fonction est la propriété de l'utilisateur sde.

    Dans cet exemple, editor1 est le propriétaire de la table et 7 est l'ID d'enregistrement de la table factories.

    EXECUTE FUNCTION "sde".next_row_id('editor1',7);
    
    ret_code 0
    err_msg
    rowid 18
    
    1 row(s) retrieved.
    

  5. Revenez à l'éditeur SQL et insérez un enregistrement dans la table.
    INSERT INTO factories
     VALUES (
      18,
      'makem'
      ST_PolyFromText('POLYGON((52 18,66 23,73 9,48 6,52 18),(59 18,67 18,67 13,59 13,59 18))',4326)
     );
    

Si la table contient également un champ GUID ou ID global, vous devez fournir une valeur unique pour ce champ. Pour plus d'informations, reportez-vous à la rubrique Insertion d'une valeur dans une colonne d'identifiant global dans Informix à l'aide de SQL.

Thèmes connexes

5/10/2014