Mise à jour de données non versionnées de géodatabase dans DB2 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.

ConseilConseil :
Si les données sont versionnées, vous devez utiliser une vue multi-versionnée pour les modifier. Reportez-vous à la rubrique Mise à jour de données versionnées dans DB2 à l'aide de vues multi-versionnées et de SQL pour savoir comment procéder.

Ces instructions expliquent la procédure de mise à jour, ligne par ligne. Vous écrirez probablement une routine ou un programme client pour récupérer des identifiants d'objet et mettre à jour vos données.

Étapes :
  1. Connectez-vous à la base de données à partir d'un éditeur SQL, tel que DB2 CLI (Call Level Interface).

    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 REGISTRATION_ID,OWNER,TABLE_NAME
    FROM SDE.TABLE_REGISTRY
    WHERE TABLE_NAME = 'FACTORIES';
    
    REGISTRATION_ID   OWNER     TABLE_NAME
         5             gis       factories
  3. Connectez-vous à une application cliente DB2 ou exécutez une routine SQL PL pour appeler la procédure next_row_id.
  4. Utilisez l'ID d'enregistrement et le nom du propriétaire renvoyés par l'instruction SELECT précédente (gis et 5) lorsque vous appelez la routine next_row_id pour obtenir le prochain ID de ligne disponible. Cette routine est stockée dans la structure de l'utilisateur sde.

    Dans cet exemple, GIS est le nom du propriétaire de la table, 5 est l'ID d'enregistrement de la table et les trois points d'interrogation indiquent les trois paramètres renvoyés : ROWID, MSGCODE et MESSAGE.

    CALL SDE.next_row_id('GIS',5,?,?,?)
    Value of output parameters
    
    Parameter Name : O_ROWID
    Parameter Value : 18
    
    Parameter Name : O_MSGCODE
    Parameter Value : 0
    
    Parameter Name : O_MESSAGE
    Parameter Value : Procedure successfully
    completed.
    
    Return Status = 1
  5. Revenez à l'interface SQL pour insérer un enregistrement dans la table.
    INSERT INTO FACTORIES
    (OBJECTID,NAME,SHAPE)
    VALUES(
    18,
    'megafactory',
    db2gse.ST_PolyFromText('POLYGON( ( 50 31, 54 31, 54 29, 50 29, 50 31) )',
    db2gse.coordref()..srid(101))
    );

Rubriques associées


3/6/2012