Acción "Omitir si..."
La acción Omitir si... consiste en una condición que se define para evitar que se actualicen ciertos registros en una tabla de BD. La acción Omitir si... está pensada para que se use en combinación con otra acción de tabla de base de datos (como Insertar restantes). Por ejemplo, al asignar datos desde un XML de origen a una base de datos de destino puede configurar una condición Omitir si... para comprobar si un campo en concreto del XML de origen es igual que otro campo en el registro de BD de destino (por lo general una clave principal). Si se cumple la condición Ignore if... (es decir, si los dos campos son iguales) el registro de la BD se ignorará al ejecutar la asignación y se ejecutará la siguiente acción definida (por ejemplo, Insertar restantes).
Este ejemplo muestra cómo insertar registros en una tabla de BD basándose en el resultado de la condición Omitir si..., para lo que usaremos 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, no se ejecuta ninguna acción que les afecte (es decir, se ignoran).
•si en la tabla "Person" existe algún registro que no cumpla la condición que hemos explicado, tampoco se ejecuta ninguna acción que les afecte.
•a los registros del XML de origen que no tengan equivalente (clave principal) en la tabla "Person" se les considera como nuevos y se insertan en la tabla "Person" con una clave principal.
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.
Paso 4: configurar las acciones "Omitir si..." e "Insertar restantes"
1.En el componente de destino, haga clic en el botón Acción: Insertar ( ), junto a la tabla "Person".
2.Junto a Acción para el registro, seleccione Omitir si... . Esto cambiará la acción de la tabla a una acción condicional de ignorar. Es decir, el registro actual solo se omitirá si se cumple una condición (véase el siguiente paso).
3.Junto a Clave principal, seleccione el valor es igual, como se muestra más abajo. Esto define la condición de la acción de omitir: el registro de BD se omitirá solo si el valor ClavePrincipal es igual al valor ClavePrincipal que proviene de la asignación.
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 Omitir si. Configure la nueva acción como Insertar restantes, con la clave principal en max() + 1, como se muestra a continuación:
En la imagen anterior las acciones de la BD se han configurado conforme a los objetivos de la asignación. Es decir, el registro solo se omite si se cumple la condición asignada a la acción Omitir si... ; de lo contrario, el registro 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. La opción max() + 1 genera una nueva clave principal única para el 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 ahora lo ha reemplazado a Acción: Omitir; Insertar. Esto indica que para esta tabla hay configuradas una acción de omitir 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 cumplen con la condición de la acción Omitir si... , por lo que permanecen intactas. 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 no cumplen con la condición Omitir si... pero también 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 del archivo XML de origen con claves principales 30 y 31. Estas se insertan en la BD con la respectivas claves principales nuevas 22 y 23.
La tabla "Person" tras actualizar la BD