Altova MapForce 2023 Enterprise Edition

La acción Eliminar si... se usa para borrar datos de una tabla de BD de forma condicional. Puede definir esta acción en el cuadro de diálogo "Acciones de tabla de la base de datos" (véase Configurar acciones de tabla de BD). Por ejemplo, al asignar datos desde un XML de origen a una BD de destino puede configurar una condición Eliminar si... para comprobar si un campo concreto del XML de origen es igual que un campo en el registro de la BD de destino (por lo general, un valor de clave principal). Si la condición Eliminar si... se cumple (es decir, si los dos campos son iguales), el registro de DB se eliminará cuando se ejecute la asignación.

 

Nota:la acción Eliminar si... no debe confundirse con la opción Eliminar datos en tablas secundarias del cuadro de diálogo "Acciones de tabla de la base de datos". La acción Eliminar si... solo afecta a la tabla para la que se ha definido la acción; el resto de tablas permanecen intactas.

 

Este ejemplo explica cómo eliminar datos de una tabla de BD de forma condicional, así como a insertar registros en esa misma tabla de BD basándose en el resultado de la condición para eliminar.

 

Este ejemplo usa los siguientes archivos:

 

altova-cmpy-extra.xml: contiene los datos de origen que deben insertarse en la base de datos.

Altova_Hierarchical.xsd: el esquema que usaremos para validar el archivo de instancia de la línea anterior.

Altova.sqlite: la base de datos de destino que vamos a actualizar.

 

Todos los archivos se encuentran en la carpeta <Documentos>\Altova\MapForce2023\MapForceExamples\. Para simplificar, más adelante omitiremos la ruta completa.

 

La asignación de este ejemplo modifica un archivo de base de datos de ejemplo. Lo más recomendable es crear una copia de seguridad de la base de datos original y empezar con una copia nueva antes de seguir las instrucciones que aparecen más abajo. Así se evitarán posibles modificaciones en los ejemplos originales y obtendrá el mismo resultado que en este ejemplo. Para más información consulte Ejecutar asignaciones que modifican bases de datos.

 

El objetivo de la asignación es el siguiente:

 

si existen registros "person" con el mismo PrimaryKey tanto en el XML de origen como en la tabla "Person" de destino, es necesario borrarlos de esta última.

el resto de los registros del XML de origen deben insertarse en la tabla "Person".

 

Para alcanzar el objetivo de la asignación, seguiremos los pasos que se describen a continuación.

 

Paso 1: insertar el componente XML de origen

En el menú Insertar, haga clic en Archivo o esquema XML... y busque el archivo Altova_Hierarchical.xsd. Cuando se le pida que indique un archivo de instancia, busque altova-cmpy-extra.xml.

 

Paso 2: insertar la BD de destino

En el menú Insertar, haga clic en Base de datos y siga los pasos del asistente para conectarse a Altova.sqlite (véase Agregar, editar y quitar objetos de BD).

 

Paso 3: dibujar las conexiones

Dibuje las conexiones de la asignación como se muestra a continuación.

mf_db_deleteif_01

 

Paso 4: configurar las acciones "Eliminar si..." e "Insertar restantes"

1.En el componente de destino, haga clic en el botón Acción: Insertar ( tbl-act-icon ), junto a la tabla "Person".

2.Junto a Acción para el registro, seleccione Eliminar si... . Esto cambia la acción de la tabla de la base de datos a una acción de eliminación condicional. Es decir, el registro actual solo se eliminará si se cumple una condición (véase el siguiente paso).

3.Junto a ClavePrincipal, seleccione el valor es igual, como se muestra más abajo. Esto define la condición de la actualización: el registro de BD se eliminará solo si el valor ClavePrincipal es igual al valor ClavePrincipal que proviene de la asignación.

mf_db_deleteif_02

4.Puede optar por marcar la casilla Null equal. En este ejemplo esta casilla es irrelevante, ya que ni el campo ClavePrimaria del XML de origen ni el campo ClavePrimaria de la BD contienen valores null. Sin embargo, debería marcar eta casilla si sus datos contienen valores null y quiere que estos sean tratados como iguales; de lo contrario puede que no obtenga los resultados deseados. Para más información consulte el apartado Gestionar valores null en acciones de tabla de BD.

5.Haga clic en Anexar acción. Esto añade una nueva acción a la derecha de la acción ya existente Eliminar si. Configure la nueva acción como Insertar restantes.

 

mf_db_deleteif_03

En la imagen anterior, las acciones de la tabla de la BD se han configurado conforme a los objetivos de la asignación. Es decir, que el registro solo se elimina si se cumple la condición asignada a la acción Eliminar si... ; de lo contrario, se inserta. La opción "valor asignado" indica que los valores de la asignación se usarán para rellenar todos los campos del registro.

 

6.Haga clic en Aceptar para cerrar el cuadro de diálogo. Observe que en la asignación al botón Acción: Insertar tbl-act-icon ahora lo ha reemplazado a Acción: Eliminar; Insertar ( mf_db_ic_action_delete_insert ). Esto indica que para esta tabla hay configuradas una acción de eliminar y una de insertar.

 

Paso 5: previsualizar la asignación y actualizar la BD

Haga clic en la pestaña Resultados para previsualizar la asignación. Se genera un script SQL que contiene las acciones que se van a ejecutar en la BD. El script todavía no ha modificado la base de datos, se trata únicamente de una vista previa. Para ejecutar el script:

 

en el menú Resultados, haga clic en Ejecutar script SQL.

 

Nota:ejecutar el script SQL directamente desde MapForce es solo una de las formas que existen de actualizar la BD. Consulte también Ejecutar asignaciones que modifican BD.

 

Si abre la tabla "Person" en la pestaña Consulta de la BD de MapForce (véase Examinar y consultar bases de datos) puede ver el resultado de la asignación:

 

todos los registros de la BD cuyas claves principales tienen correspondencia en el archivo XML se eliminan. Esto ocurre, por ejemplo, con los registros con claves principales 1, 2, 3, 4 y 5.

todos los registros de BD que no tienen claves principales correspondientes en el archivo XML permanecen intactas. Esto ocurre, por ejemplo, con los registros con claves principales 6, 7, 8, 9, 10, 11, 12 y 13.

se insertan nuevos registros en la tabla "Person" (en los casos en los que no existe ya una clave en la base de datos). Esto ocurre, por ejemplo, con los registros con claves principales 30 y 31.

mf_db_deleteif_04

La tabla "Person"  después de actualizar la DB

© 2017-2023 Altova GmbH