Mise à jour de données versionnées dans PostgreSQL à 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.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.

SELECT sde.sde_create_version ('<parent_name>', '<version_name>', <rule_code>, <access_code>, '<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.sde_set_current_version

Définit la version de géodatabase à laquelle vous souhaitez accéder.

SELECT sde.sde_set_current_version('<version_name>');

<version_name> est le nom de la version de géodatabase à laquelle vous souhaitez vous connecter.

sde.sde_edit_version

Démarre et arrête une session de mise à jour.

SELECT sde.sde_edit_version('<version_name>',<1 ou 2>)

Spécifiez 1 pour démarrer la session de mise à jour. Spécifiez 2 pour l'arrêter.

sde.sde_delete_version

Supprime une version de géodatabase.

SELECT sde.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.

AttentionAttention :
  • 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.

AstuceAstuce :

Souvenez-vous que le jeu de données que vous mettez à jour par le biais d'une vue multi-versionnée doit avoir été déjà inscrit comme versionné.

Etapes :
  1. Dans l'invite de commande MS-DOS (Windows) ou shell (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:postgresql:myserver –D code –u sarja –p not4U
  2. Connectez-vous à la base de données à partir de psql et créez une nouvelle version dans laquelle effectuer vos mises à jour.
    SELECT sde.sde_create_version
    ('sde.DEFAULT', 'mvedits', 2, 1, 'version for edits');
  3. Le texte entre guillemets simples est lu littéralement. Par conséquent, le texte que vous saisissez entre guillemets doit correspondre à la casse du texte (tout en majuscules, tout en minuscules ou casse mixte) tel qu'il est stocké dans la base de données.

  4. Définissez la version pour la session de mise à jour sur la version enfant que vous venez de créer.
    SELECT sde.sde_set_current_version('mvedits');
  5. Ouvrez une session de mise à jour en exécutant la fonction sde_edit_version et en spécifiant 1.

    La valeur 1 indique qu'une session de mise à jour doit être ouverte.

    SELECT sde.sde_edit_version('mvedits',1);
  6. 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
  7. Lorsque vous avez terminé toutes vos modifications pour cette session, arrêtez la session de mise à jour en exécutant la fonction sde_edit_version, mais cette fois, spécifiez 2.

    La valeur 2 indique que la session de mise à jour doit être fermée.

    SELECT sde.sde_edit_version('mvedits',2);
  8. Une fois que vous avez terminé toutes les mises à jour, réconciliez et réinjectez les modifications par le biais d'ArcGIS Desktop, puis vous pouvez supprimer 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 vos modifications.
    SELECT sde.sde_delete_version('mvedits');

Rubriques connexes


7/10/2012