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. 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.
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.
Utilisez la fonction Next_RowID du paquetage sde.gdb_util pour générer une nouvelle valeur unique pour l'identifiant ObjectID.
La fonction Next_RowID utilise deux paramètres : le propriétaire de la table et le nom de la table. Avec le propriétaire de la table et le nom de la table, il est possible de créer une instruction SQL pour renseigner le champ ObjectID.
L'identifiant ObjectID disponible suivant n'est pas nécessairement le prochain nombre séquentiel qui suit le dernier identifiant ObjectID inséré. Pour certaines applications clientes, les identifiants ObjectID sont attribués par lots. Ainsi, l'identifiant ObjectID disponible suivant peut correspondre à des nombres beaucoup plus élevés que le dernier que vous avez utilisé. De plus, les identifiants ObjectID du lot sont renvoyés dans le groupe des valeurs disponibles. Par conséquent, la valeur du prochain identifiant ObjectID disponible peut en réalité être un nom inférieur à celui que vous avez inséré en dernier.
-
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.
-
Incluez la fonction sde.gdb_util.next_rowid avec les noms du propriétaire et de la table dans l'instruction INSERT pour insérer la prochaine valeur disponible dans le champ ObjectID.
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.gdb_util.next_rowid('ENG2', 'STREAMS'), 'TRANQUIL', sde.ST_GEOMETRY('linestring (750 150, 750 750)', 4) );
- Vous pouvez continuer la mise à jour ou, si vous avez terminé, valider vos modifications dans la base de données.