Mise à jour de données versionnées dans Informix à l'aide de vues multi-versionnées et de SQL
Vous pouvez mettre à jour des données versionnées dans une géodatabase en modifiant une vue multi-versionnée créée sur les données.
Plusieurs fonctions installées avec ArcSDE vous aident à utiliser les vues multi-versionnées. Voici ces fonctions et leurs descriptions :
Fonction |
Objet |
Syntaxe et description |
---|---|---|
sde.create_version |
Crée une nouvelle version de la géodatabase. Modifiez toujours votre propre version distincte ; les vues multi-versionnées ne permettent pas à plusieurs éditeurs de modifier la même version. |
EXECUTE FUNCTION sde.create_version ('<parent_version>', '<child_version>', <name_rule>, <access>, '<description>' <parent_version> est la version à partir de laquelle votre version est créée. <child_version> est le nom de la version que vous créez. <name_rule> indique si le nom spécifié pour la version doit être accepté tel qu'il est fourni (2) ou si un nom unique doit être créé quand un nom dupliqué est spécifié (1). <access> est le niveau d'autorisation de la version ; 0 pour Privé, 1 pour Public ou 2 pour Protégé. <description> est un texte descriptif de la version enfant. |
sde.set_current_version |
Définit la version de géodatabase à laquelle vous souhaitez accéder. |
EXECUTE FUNCTION sde.set_current_version('<version_name>') <version_name> est la version de géodatabase |
sde.edit_version |
Démarre et arrête une session de mise à jour. |
EXECUTE FUNCTION sde.edit_version('<version_name>',1) Spécifiez 1 pour démarrer la session de mise à jour. Spécifiez 2 pour l'arrêter. |
sde.delete_version |
Supprime une version de géodatabase. |
EXECUTE FUNCTION sde.delete_version('<version_name>') |
Lorsque vous modifiez des tables versionnées par le biais de vues multi-versionnées, les modifications sont apportées dans les tables de deltas et les valeurs d'ID de ligne (identifiant d'objet) sont générées automatiquement pour les nouveaux enregistrements. Toutefois, contrairement à la mise à jour des données versionnées dans une session de mise à jour ArcGIS, aucune réconciliation de versions interne n'est réalisée avec ces mises à jour.
Un verrouillage exclusif est, en outre, placé sur l'état auquel la version fait référence lorsque vous démarrez une session de mise à jour sur une vue multi-versionnée. Par conséquent, il est vivement recommandé de ne pas utiliser les vues multi-versionnées pour mettre à jour la version DEFAULT ou toute version pouvant être soumise à une mise à jour ou une réconciliation simultanée par d'autres utilisateurs, car les conflits ne seront pas détectés et les verrouillages bloqueront les autres utilisateurs. Créez plutôt votre propre version pour la session de mise à jour des vues multi-versionnées.
- Les opérations de gestion des versions, telles que la réconciliation, la résolution de conflits et la réinjection, doivent être réalisées à l'aide du logiciel ArcGIS. Une gestion incorrecte des versions peut endommager la géodatabase lorsque vous utilisez les vues.
- Veuillez également ne jamais utiliser les outils de système de gestion de base de données (SGBD) pour mettre à jour des champs d'ID de ligne (identifiant d'objet) gérés par ArcSDE dans la base de données. Ces champs d'identifiant d'objet sont attribués et gérés par la géodatabase et, par conséquent, ne doivent pas être modifiés à l'aide de SQL.
- Ne mettez jamais à jour la version DEFAULT de la géodatabase à l'aide de SQL. Le démarrage d'une session de mise à jour sur une version permet d'obtenir un verrouillage exclusif sur l'état auquel la version fait référence. En verrouillant la version DEFAULT, vous empêchez les utilisateurs ArcGIS de se connecter à la géodatabase.
Les étapes suivantes vous expliquent comment créer une vue multi-versionnée, créer une version dans laquelle effectuer des modifications, définir la version à modifier, démarrer une session de mise à jour, effectuer des modifications à travers la vue multi-versionnée, arrêter la session de mise à jour, valider vos modifications dans la base de données et supprimer la version créée pour les modifications. Dans les exemples, la vue multi-versionnée créée pour effectuer les mises à jour sur la table est code_mv, tandis que la version créée et utilisée pour la mise à jour est mvedits.
-
Dans l'invite de commande MS-DOS (Windows) ou shell (UNIX ou Linux), exécutez l'utilitaire sdetable pour créer une vue multi-versionnée.
sdetable –o create_mv_view –T code_mv –t code_enf –i sde:informix –D code –u sarja –p not4U
-
Créez une nouvelle version dans laquelle effectuer vos mises à jour.
EXECUTE FUNCTION sde.create_version ('sde.DEFAULT', 'mvedits', 1, 1, 'multiversioned view edit version')
-
Définissez la version pour la session de mise à jour sur la version enfant que vous venez de créer.
EXECUTE FUNCTION set_current_version('mvedits')
-
Ouvrez une session de mise à jour en exécutant la fonction edit_version et en spécifiant 1. La valeur 1 indique qu'une session de mise à jour doit être ouverte.
EXECUTE FUNCTION sde.edit_version('mvedits',1)
-
Effectuez la première modification dans la vue multi-versionnée à l'aide de SQL.
Dans cet exemple, un enregistrement existant est mis à jour.
UPDATE code_mv SET propowner = 'C. Industry' WHERE vid = 2233
-
Effectuez la modification suivante dans la vue multi-versionnée à l'aide de SQL.
Dans cet exemple, un nouvel enregistrement est inséré.
INSERT INTO code_mv (codenum,propowner,shape) VALUES (567, 'Anjo Badsu', ST_PointFromText('point (40 40))', 12)
- Exécutez une instruction COMMIT ou ROLLBACK.
-
Arrêtez la session de mise à jour en exécutant la fonction edit_version, mais cette fois, spécifiez 2.
La valeur 2 indique que la session de mise à jour doit être fermée.
EXECUTE FUNCTION sde.edit_version('mvedits',2)
-
Une fois que vous avez terminé toutes les mises à jour, réconciliez et réinjectez les modifications par le biais d'ArcGIS Desktop, puis supprimez la version de géodatabase que vous avez créée à l'étape 2. Si vous décidez de ne pas conserver les modifications, vous pouvez également supprimer la version que vous avez créée à l'étape 2 sans réconcilier ni réinjecter les modifications.
EXECUTE FUNCTION sde.delete_version('mvedits')