Editar datos versionados en DB2 con vistas multiversionadas y SQL
Puede editar datos de atributos versionados en una geodatabase en IBM DB2 en los sistemas operativos Linux, UNIX o Windows mediante la edición de una vista multiversionada creada sobre los datos.
las vistas multiversionadas no son compatibles con las bases de datos de DB2 en sistemas operativos z.
Existen varios procedimientos almacenados instalados con ArcSDE que lo ayudan a trabajar con vistas multiversionadas. Estos componentes y sus descripciones son los siguientes:
Procedimiento almacenado |
Propósito |
Sintaxis y descripción |
---|---|---|
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. |
CALL sde.create_version ('<parent_version>', '<child_version>', <name_rule>, <access>, '<description>', <message_code_output>, <message_output>) <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. <message_code_output> indica que desea que el código SQL le sea devuelto. <message_output> indica que desea que los mensajes SQL le sean devueltos. |
sde.setcurrentversion |
Establece a qué versión de geodatabase accederá. |
CALL sde.setcurrentversion('<version_name>', <message_code_output>, <message_output>) <version_name> es el nombre de la versión de la geodatabase a la cual desea conectarse. |
sde.edit_version |
Inicie y finalice una sesión de edición. |
CALL sde.edit_version('<version_name>', <1 ó 2>, <message_code_output>, <message_output>) Especifique 1 para iniciar la sesión de edición. Especifique 2 para finalizarla. |
sde.delete_version |
Elimine una versión de la geodatabase. |
CALL sde.delete_version('<version_name>', <message_code_output>, <message_output>) |
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 (UNIX o Linux).
sdetable –o create_mv_view –T code_mv –t code_enf –i sde:db2 –D code –u sarja –p not4U
-
Cree una nueva versión para realizar las modificaciones.
CALL sde.create_version ('SDE.DEFAULT', 'mvedits', 1, 1, 'multiversioned view edit version', ?, ?)
-
Establezca la versión para la sesión de edición como la versión secundaria recién creada.
CALL sde.setcurrentversion('mvedits', ?, ?)
-
Inicie una sesión de edición mediante una llamada al procedimiento almacenado edit_version y especifique 1. El número 1 indica que se debe iniciar una sesión de edición.
CALL sde.edit_version('mvedits', 1, ?, ?)
-
Lleve a cabo la primera modificación en la vista multiversionada con SQL.
En este ejemplo se actualiza un registro existente.
UPDATE code_mv SET propowner = 'C. Industry' WHERE vid = 2233
-
Lleve a cabo la siguiente modificación en la vista multiversionada con SQL.
En este ejemplo se inserta un nuevo registro.
INSERT INTO code_mv (codenum, propowner) VALUES (456, 'Anjo Badsu')
Sugerencia:En la declaración INSERT, no se especifica ningún valor de Id. de objeto, la vista multiversionada automáticamente obtiene el próximo Id. de objeto disponible y lo inserta para la fila.
Aunque es posible versionar la tabla que ha sido registrada solamente con ArcSDE y que tiene una columna de Id. de objeto que mantiene el usuario, no es un procedimiento recomendado. Si de igual forma lo hace, debe proporcionar un Id. de objeto con las declaraciones INSERT; la vista multiversionada no puede generar un valor por usted.
- Ejecute un estamento COMMIT o ROLLBACK.
-
Detenga la sesión de edición mediante una llamada al procedimiento almacenado edit_version, pero esta vez, especifique 2. El número 2 indica que se debe finalizar la sesión de edición.
CALL sde.edit_version('mvedits', 2, ?, ?)
-
Cuando finaliza todas las modificaciones, concílielas y publíquelas por medio de ArcGIS Desktop, y después elimine la versión de geodatabase que creó en el paso 2. Si decide que no quiere conservar los cambios, puede eliminar la versión que creó en el paso 2 sin conciliar y publicar las modificaciones.
CALL sde.delete_version('mvedits', ?,?)
Text enclosed in single quotes is read literally. Therefore, the text you type inside the quote marks must match the case of the text (all upper case, all lower case, or mixed case) as it is stored in the database.