Editar datos versionados en Oracle SQL

Complejidad: Principante Requisito de datos: Utilizar datos propios

Puede editar datos versionados en una geodatabase en Oracle de dos formas: mediante la edición de una versión con nombre a través de una visualización versionada o mediante la edición de la versión DEFAULT a través de una visualización versionada. Vea Un recorrido rápido por la edición de datos versionados usando SQL para obtener una descripción de cada modelo de edición.

En la mayoría de los casos, utilizará solo un modelo de edición. Sin embargo, es posible utilizar ambos modelos en el mismo sitio; por lo tanto, este flujo de trabajo explica cómo utilizar ambos para que pueda ver cómo llevar la transición entre los dos. Si utiliza solo uno, lea la sección específica para editar el modelo que desea utilizar.

Editar la versión DEFAULT

Puede utilizar SQL para conectarse a la versión DEFAULT y editar una vista versionada. No necesita abrir una sesión de edición. Cuando empieza a editar, se conecta automáticamente al estado actual de la versión DEFAULT.

Debería confirmar después de cada edición que realice para evitar el bloqueo de otros usuarios para acceder a las tablas delta de la clase de entidad o tabla.

En los siguientes pasos, se edita una vista versionada (blic_evw). Las ediciones se realizan para que esta vista se escriba en las tablas delta de la tabla versionada blic. Dado que solo hay un par de ediciones, se realizarán en la versión DEFAULT.

Pasos:
  1. Conéctese a la base de datos desde un cliente SQL. Asegúrese de conectarse como un usuario con privilegios para editar la vista versionada y dataset.
  2. Lleve a cabo la primera modificación en la vista versionada mediante SQL.

    En este ejemplo, se actualiza una fila existente para modificar el nombre del propietario de la propiedad.

    UPDATE blic_evw 
    SET propowner = 'C. O. Industry' 
    WHERE lic = 44977;
    
  3. Confirme su edición.
    COMMIT;
    
  4. Realice la siguiente edición.

    Se agrega un nuevo registro a una tabla a través de la vista versionada. La tabla contiene una columna ST_Geometry (ubicación).

    INSERT INTO blic_evw (propowner, date_entered, location)
    VALUES (
      'Moe Esposito', 
      SYSDATE, 
      sde.ST_PointFromText ('point (0.0125662 0.0046711)', 12));
    
    SugerenciaSugerencia:

    En la declaración INSERT, no se especifica ningún valor de Id.del objeto, la vista versionada obtiene automáticamente el próximo Id. del objeto disponible y lo inserta para la fila.

  5. Confirme su edición.
    COMMIT;
    

Editar una versión con nombre

Mantiene una pila de actualizaciones para la clase de entidad blic, de manera que decide si sería una buena idea realizar sus ediciones en una versión con nombre.

Los siguientes son procedimientos almacenados y su sintaxis que utilizará para editar una versión con nombre de la geodatabase:

Procedimiento almacenado

Propósito

Sintaxis y descripción

version_user_ddl.create_version

Crear una versión de geodatabase con nombre.

Si está editando versiones con nombre (versiones distintas a la DEFAULT), siempre edite la suya aparte; varios editores no pueden editar la misma versión con nombre usando vistas versionadas.

EXEC {sde | <schema owner>}.version_user_ddl.create_version ('<parent_version>', :<child_version_variable>, <name_rule>, <access>, '<description>')

version_util.set_current_version

Establece a qué versión de geodatabase y estado accederá.

Acceda al estado de la versión que estaba señalando al ejecutar set_current_version.

EXEC {sde | <schema owner>}.version_util.set_current_version('<child_version>')

version_user_ddl.edit_version

Inicia y finaliza una sesión de edición en una versión con nombre.

Las ediciones en la transacción están confirmadas siempre que se ejecute este procedimiento.

EXEC {sde | <schema owner>}.version_user_ddl.edit_version ('<child_version>',<1 or 2>)

Especifique 1 para iniciar la sesión de edición. Especifique 2 para finalizarla.

Los parámetros en las declaraciones de ejecución representan lo siguiente:

  • {sde | <schema owner>} indica qué usuario es el propietario del procedimiento. Si el procedimiento se ejecuta para la geodatabase maestra sde, utilice sde. Si se va a ejecutar para una geodatabase en otro esquema de usuario, especifique el nombre de ese usuario.
  • <parent_version> es la versión desde la cual se crea su versión.
  • <child_version> es la versión con nombre que creó para editar.
  • <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 si es privada, 1 si es pública o 2 si es protegida.
  • <description> es una descripción de texto de una versión secundaria.

En los siguientes pasos, se crea una versión con nombre (myedits12111) a partir de la versión DEFAULT y las ediciones se realizan en esa versión a través de la vista versionada blic_evw.

Pasos:
  1. Abra un cliente SQL y declare una variable para almacenar la versión que creará en el próximo paso.
    VARIABLE my_version NVARCHAR2(10); 
    EXEC :my_version := 'myedits12111';
    

    En este ejemplo, my_version es el nombre de la variable, NVARCHAR2(10) es el tipo de dato de la variable, y myedits12111 es el nombre de la versión.

  2. Cree una nueva versión para realizar las modificaciones.
    EXEC sde.version_user_ddl.create_version 
    ('sde.DEFAULT', :my_version, sde.version_util.C_take_name_as_given, sde.version_util.C_version_private, 'versioned view edit version');
    
  3. Establezca la versión para la sesión de edición como la versión secundaria recién creada.
    EXEC sde.version_util.set_current_version('myedits12111');
    
  4. Inicie una sesión de edición mediante la ejecución del procedimiento almacenado version_user_ddl.edit_version y especifique 1.

    El número 1 indica que se debe iniciar una sesión de edición.

    EXEC sde.version_user_ddl.edit_version('myedits12111',1);
    
  5. Haga un conjunto de ediciones en la vista versionada usando SQL.
    INSERT INTO blic_evw (propowner, date_entered, location)
    VALUES (
      'V. Nay', 
      SYSDATE, 
      sde.ST_PointFromText ('point (0.0125699 0.0046700)', 12));
    
    UPDATE blic_evw 
    SET phone1='555.111.2345', phone2='555.111.6789' 
    WHERE propowner = 'Tella Chomsky';
    
    UPDATE blic_evw
    SET exp_date = '2020-06-30'
    WHERE lid = 22903;
    
    UPDATE blic_evw
    SET location = sde.ST_PointFromText ('point (0.0125705 0.0046688)', 12))
    WHERE lid = 8992;
    
    INSERT INTO blic_evw 
    (codenum, propowner) 
    VALUES (456, 'Anjo Badsu');
    
    DELETE FROM blic_evw
    WHERE lid = 133;
    
  6. Confirme sus ediciones.
    COMMIT;
    
  7. Se realizan más ediciones en SQL. Después de finalizar el siguiente conjunto de ediciones, cierre la sesión de edición.
  8. Inicie una sesión de edición mediante la ejecución del procedimiento almacenado version_user_ddl.edit_version, pero esta vez especifique 2.

    El número 2 indica que se debe cerrar la sesión de edición.

    EXEC sde.version_user_ddl.edit_version('myedits12111',2);
    
    SugerenciaSugerencia:

    Solo puede editar una versión por sesión de edición. Por ejemplo, si desea editar una segunda versión (tal como mynewedits), debe cerrar la sesión de edición en myedits12111, como se muestra en este paso. A continuación podría ejecutar set_current_version para señalar la versión de mynewedits, e iniciar una sesión de edición ejecutando edit_version.

Cambiar de editar una versión con nombre para volver a editar la versión DEFAULT

Si necesita regresar para editar la versión DEFAULT directamente (por ejemplo, si su administrador le dice que otros usuarios en su sitio necesitan ver una edición en particular inmediatamente), puede ejecutar version_user_ddl.set_default para cambiar y regresar a la edición de la versión DEFAULT. Las ediciones que le haga a la versión DEFAULT las pueden ver otros usuarios que están conectados, tan pronto como se actualicen sus conexiones de cliente.

El procedimiento almacenado y su sintaxis que utilizará para editar la versión DEFAULT de la geodatabase se describen a continuación:

Procedimiento almacenado

Propósito

Sintaxis y descripción

version_util.set_default

Regrese para editar el estado actual de la versión DEFAULT.

Ejecute este procedimiento si estaba editando una versión con nombre o un estado específico de la versión DEFAULT, pero desea regresar a editar la versión DEFAULT actual.

EXEC {sde | <schema owner>}.version_user_ddl.set_default

Pasos:
  1. En la ventana SQL, ejecute el procedimiento set_default.
    EXEC sde.version_util.set_default;
    

    Se establece la sesión ahora para editar el estado actual al que se refiere la versión DEFAULT.

  2. Edite la vista versionada blic_evw.
    INSERT INTO blic_evw (propowner, b_name, date_entered, location)
    VALUES (
      'Ruben Gol', 
      SYSDATE, 
      'Chez Coiffure',
      sde.ST_PointFromText ('point (0.0125650 0.0046721)', 12));
    
  3. Confirme su edición.
    COMMIT;
    

    Otros clientes que se dirigen al mismo estado de la versión DEFAULT o cualquier estado en su linaje pueden actualizar sus conexiones y ver la nueva entidad de puntos.

Conciliar y publicar las ediciones para la versión con nombre.

Cuando finalice las ediciones en la versión con nombre, debe utilizar ArcGIS para conciliar, revisar y resolver conflictos y publicar sus ediciones. Esto se puede llevar a cabo en ArcGIS for Desktop mediante la herramienta de geoprocesamiento por lotes Conciliar versiones o una secuencia de comandos Python. Consulte los siguientes temas para obtener más información:

SugerenciaSugerencia:

Si los datos que estaba editando se han registrado previamente como versionados con la opción de mover las ediciones a la base, esas ediciones se moverán a la tabla base después de conciliarlas y publicarlas en la versión DEFAULT.

Una vez publicadas las modificaciones en la versión DEFAULT, puede eliminar la versión con nombre. El procedimiento almacenado y su sintaxis que utilizará para eliminar la versión con nombre después de conciliarla y publicarla en la versión DEFAULT de la geodatabase se describen a continuación:

Procedimiento almacenado

Propósito

Sintaxis y descripción

version_user_ddl.delete_version

Elimine una versión de la geodatabase.

EXEC {sde | <schema owner>}.version_user_ddl.delete_version('<child_version>')

El siguiente ejemplo elimina myedits12111 después de haber conciliado y publicado todas las ediciones en la versión DEFAULT:

EXEC sde.version_user_ddl.delete_version('myedits12111');

Temas relacionados

5/10/2014