Altova MapForce 2023 Enterprise Edition

L’action de table Supprimer si.. Est utilisée pour supprimer des données de la table de la base de données de manière conditionnelle. Vous pouvez définir cette action depuis le dialogue Actions de table de base de données (voir Paramètres Actions de table de base de données). Par exemple, lors du mappage de données depuis un XML de source dans une base de données cible, vous pouvez configurer une condition Supprimer si... pour vérifier si un certain champ dans le XML de source est égal à un champ dans l'enregistrement de base de données de cible (généralement, une valeur de clé primaire). Si la condition Supprimer si... est vraie (donc, si les deux champs sont égaux), l'enregistrement de base de données sera supprimé lorsque le mappage est exécuté.

 

Note :L’action de table Supprimer si... Ne devrait pas être confondue avec l’option Supprimer les données dans les tables enfant disponible dnas la boîte de dialogue disponible dans les Actions de table de la base de données. L'action de table Supprimer si... ne touche que la table pour laquelle l'action est définie ; aucune autre table n'est touché.

 

Cet exemple vous montre comment supprimer des données depuis une table de base de données de manière conditionnelle, et insère aussi des enregistrements dans la même table de base de données dans le résultat de la condition de suppression.

 

L'exemple utilise les fichiers suivants :

 

altova-cmpy-extra.xml — contient les données de source à insérer dans la base de données.

Altova_Hierarchical.xsd — le schéma utilisé pour valider le fichier d'instance ci-dessus.

AltovaTarget.mdb — la base de données à mettre à jour.

 

Tous de fichiers sont disponibles dans le dossier <Documents>\Altova\MapForce2023\MapForceExamples\. Ci-dessous, le chemin complet vers les fichiers sera omis, par mesure de simplicité.

 

Le mappage dans cet exemple modifie un fichier de base de données d'échantillon. Il est fortement recommande de sauvegarder la base de données originale et de commencer avec une nouvelle copie avant de suivre les étapes ci-dessous. Cela garantit que les exemples originaux ne sont pas contournés et que vous obtenez les mêmes résultats ci-dessous. Pour plus d'informations, voir Exécuter des mappages qui modifient les bases de données.

 

L'objectif du mappage est le suivant :

 

Si des enregistrements Person avec la même PrimaryKey existent dans XML source et la table Person cible, ils doivent être supprimés de la table Person.

Tous les autres enregistrements du XML de source doivent être insérés dans la table Person.

 

Pour atteindre l'objectif de mappage, nous allons suivre les étapes suivantes.

 

Étape 1 : Insérer le composant XML source

Dans le menu Insérer, cliquer sur Schéma/Fichier XML, et chercher Altova_Hierarchical.xsd. Lorsque vous êtes invité à fournir un fichier d'instance, chercher altova-cmpy-extra.xml.

 

Étape 2 : Insérer la base de données cible

Dans le menu Insérer, cliquer sur Base de données, et suivre les étapes de l'assistant pour vous connecter à Altova.sqlite. Voir Ajouter une Base de données.

 

Étape 3 : Tirer les connexions

Tracer les connexions de mappage comme indiqué ci-dessous.

mf_db_deleteif_01

 

Étape 4 : Configurer les actions "Supprimer si... Insérer Rest"

1.Dans le composant de cible, cliquer sur la touche Action: Insérer (tbl-act-icon) située à côté de la table "Person".

2.À côté de Action sur enregistrement, choisir Supprimer si... . Cela change l'action de table de la base de données en une action de suppression conditionnelle. C'est à dire que l'enregistrement actuel sera uniquement supprimé lorsqu'une condition sera satisfaite (voir étape suivante).

3.À côté de PrimaryKey, choisir la valeur equal, comme indiqué ci-dessous. Cela définit la condition de mise à jour : c'est-à-dire, l'enregistrement de la base de données sera supprimé uniquement lorsque sa valeur PrimaryKey sera égale à la valeur PrimaryKey provenant du mappage.

mf_db_deleteif_02

4.En option, cocher la case NULL equal. Dans cet exemple, cette case à cocher n'est pas pertinente car ni le champ PrimaryKey se trouvant dans le XML de source ni le champ PrimaryKey dans la base de données ne contient de valeurs null. Néanmoins, vous devriez cocher cette case si vos données contiennent des valeurs null, et si vous souhaitez traiter ces valeurs comme égales ; sinon, vous risquez d'obtenir des résultats indésirables. Pour plus d'informations, voir Gérer des valeurs null dans les actions de table de base de données.

5.Cliquer sur Apposer action. Cela permet d'ajouter une nouvelle action à la droite de l'action existante Supprimer si. Configurer la nouvelle action comme Insert Rest :

mf_db_deleteif_03

Dans les images ci-dessus, les actions de Table de base de données ont été configurées conformément aux objectifs du mappage. C'est-à-dire que seule si la condition Supprimer si... est satisfaite, l'enregistrement sera mis à jour ; sinon, il sera inséré. L'option "valeur mappée" spécifie que des valeurs provenant du mappage seront utilisées pour remplir tous les champs de l'enregistrement.

 

6.Cliquer sur OK pour fermer le dialogue. Veuillez noter que, une fois que vous serez retourné au mappage, la touche Action: Le bouton Insert tbl-act-icon est maintenant transformé en une touche Action: Bouton Supprimer ; Insérer ( mf_db_ic_action_delete_insert ). Cela indique que l'action de suppression et d'insertion est configurée pour avoir lieu pour cette table.

 

Étape 5 : Consulter le mappage et mettre à jour la base de données

Cliquer sur l'onglet Sortie pour consulter le mappage. Un script SQL est généré, contenant les actions à exécuter par rapport à la base de données. Le script n'a pas encore modifié la base de données ; elle est uniquement destinée à la prévisualisation. Pour exécuter le script par rapport à la base de données :

 

Dans le menu Sortie, cliquer sur Exécuter Script SQL.

 

Note :L'exécution du script SQL directement depuis MapForce est juste un des moyens mis à disposition pour mettre à jour la base de données, voir aussi Exécuter des mappages qui modifient des bases de données.

 

Si vous ouvrez la table "Person" dans l'onglet de requête de BD de MapForce (voir Parcourir et interroger des bases de données), vous pouvez voir le résultat du mappage comme suit :

 

Tous les enregistrements de base de données qui avaient des clés primaires correspondantes dans le fichier XML ont été supprimés. Dans l'exemple, des enregistrements avec la clé primaire 1, 2, 3, 4 et 5.

Tous les enregistrements de base de données qui n'ont pas de clés correspondantes dans le fichier XML restent non-affectés. Dans l'exemple, des enregistrements avec la clé primaire 6, 7, 8, 9, 10, 11, 12 et 13.

De nouveaux enregistrements ont été insérés dans la table "Person" (lorsque la clé n'existait pas encore dans la base de données). Dans l'exemple, des enregistrements avec la clé primaire 30 et 31.

mf_db_deleteif_04

La table "Person" après mettre à jour la base de données

© 2017-2023 Altova GmbH