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.
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.
-
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.
-
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
- Connectez-vous à une application cliente DB2 ou exécutez une routine SQL PL pour appeler la procédure next_row_id.
-
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
-
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)) );