Editar datos versionados en PostgreSQL con vistas multiversionadas y SQL
Puede editar datos versionados en una geodatabase mediante la edición de vistas multiversionadas creadas sobre los datos.
Existen muchas funciones instaladas con ArcSDE que lo ayudan a trabajar con vistas multiversionadas. Estas funciones y sus descripciones son las siguientes:
Función |
Propósito |
Sintaxis y descripción |
---|---|---|
sde.sde_create_version |
Crear una nueva versión de la geodatabase. Siempre edite su propia versión aparte; varios editores no pueden editar la misma versión con vistas multiversionadas. |
SELECT sde.sde_create_version ('<parent_name>', '<version_name>', <rule_code>, <access_code>, '<description>') <parent_version> es la versión desde la cual se crea su versión. <child_version> es el nombre para la versión que crea. <name_rule> indica si el nombre especificado para la versión debería haber sido tomado como dado (2) o debería haberse creado un nombre único cuando se especificó un nombre duplicado (1). <access> es el nivel de permiso para la versión, 0 para Privado, 1 para Público o 2 para Protegido. <description> es una descripción de texto de una versión secundaria. |
sde.sde_set_current_version |
Establece a qué versión de geodatabase accederá. |
SELECT sde.sde_set_current_version('<version_name>'); <version_name> es el nombre de la versión de la geodatabase a la cual desea conectarse. |
sde.sde_edit_version |
Inicie y finalice una sesión de edición. |
SELECT sde.sde_edit_version('<version_name>',<1 ó 2>) Especifique 1 para iniciar la sesión de edición. Especifique 2 para finalizarla. |
sde.sde_delete_version |
Elimine una versión de la geodatabase. |
SELECT sde.sde_delete_version('<version_name>'); |
Cuando edita tablas versionadas a través de vistas multiversionadas, los cambios se hacen a las tablas delta y los valores de la fila Id. (Id. de objeto) para los registros nuevos se generan automáticamente. Sin embargo, a diferencia de la edición de datos versionados en una sesión de edición en ArcGIS, no se realiza la conciliación de versión interna con estas modificaciones.
Además, se ubica un bloqueo exclusivo en el estado al que hace referencia la versión cuando inicia una sesión de edición en una vista multiversionada. Por consiguiente, se recomienda especialmente que no se utilicen las vistas multiversionadas para editar la versión DEFAULT o cualquier versión que pueda estar sujeta a ediciones simultáneas o a conciliación por parte de otros usuarios debido a que no se detectarán los conflictos y se bloqueará a los otros usuarios. Por el contrario, cree su propia versión específicamente para la sesión de edición con vista multiversionada.
- Las operaciones de administración de versiones, como la conciliación, la resolución de conflictos y la publicación, deben realizarse con el software de ArcGIS. La administración inadecuada de versiones puede dañar las geodatabases cuando se trabaje con vistas.
- Nunca utilice herramientas de un sistema de administración de bases de datos (DBMS) para actualizar algún campo de Id. de fila (Id. de objeto) que ArcSDE mantenga en la base de datos. Estos campos de Id. de objeto se ubican en las geodatabases, son administrados por estas y, por lo tanto, no deben alterarse con SQL.
- Nunca edite la versión DEFAULT de la geodatabase con SQL. Al iniciar una sesión de edición en una versión se obtiene un bloqueo exclusivo en el estado al que la versión hace referencia. Si bloquea la versión DEFAULT, no permite que los usuarios de ArcGIS se conecten a la geodatabase.
Los siguientes pasos lo guían para crear una vista multiversionada, para crear una versión en la cual realizar modificaciones, establecer la versión para editar, comenzar una nueva edición, realizar algunas modificaciones a través de la vista multiversionada, detener la sesión de edición, asignar las modificaciones a la base de datos y eliminar la versión creada para las modificaciones. En los ejemplos, la vista multiversionada creada para realizar las modificaciones sobre la tabla es code_mv, y la versión creada y usada para las modificaciones es mvedits.
recuerde que el dataset que edite a través de una vista multiversionada debe haber sido registrado como versionado.
-
Ejecute la utilidad sdetable para crear una vista multiversionada en una ventana de comando de MS-DOS (Windows) o de shell (Linux).
sdetable –o create_mv_view –T code_mv –t code_enf –i sde:postgresql:myserver –D code –u sarja –p not4U
-
Inicie sesión en la base de datos desde psql y cree una nueva versión en la cual realizar las modificaciones.
SELECT sde.sde_create_version ('sde.DEFAULT', 'mvedits', 2, 1, 'version for edits');
-
Establezca la versión para la sesión de edición como la versión secundaria recién creada.
SELECT sde.sde_set_current_version('mvedits');
-
Inicie una sesión de edición mediante la ejecución de la función sde_edit_version y especifique 1.
El número 1 indica que se debe iniciar una sesión de edición.
SELECT sde.sde_edit_version('mvedits',1);
-
Lleve a cabo la primera modificación a través de la vista multiversionada con SQL.
En este ejemplo se actualiza un registro existente.
UPDATE code_mv SET propowner = 'C. Industry' WHERE vid = 2233
-
Cuando haya terminado todas las modificaciones para la sesión, detenga la sesión de edición mediante la ejecución de la función sde_edit_version, pero esta vez especifique 2.
El número 2 indica que se debe cerrar la sesión de edición.
SELECT sde.sde_edit_version('mvedits',2);
-
Cuando finaliza la edición, concilie y publique las modificaciones posteriores a través de ArcGIS Desktop, y luego puede eliminar la versión de la geodatabase que creó en el paso 2. O bien, si decide que no quiere conservar los cambios, puede eliminar la versión que creó en el paso 2 sin conciliar ni publicar las modificaciones.
SELECT sde.sde_delete_version('mvedits');
El texto entre comillas simples se lee literalmente. Por lo tanto, el texto que escriba entre comillas debe coincidir con el uso de mayúsculas y minúsculas del texto (todas mayúsculas, todas minúsculas o mayúsculas y minúsculas) según como esté almacenado en la base de datos.