Die Aktion "Ignorieren, wenn..."
Mit Hilfe der Datenbankaktion Ignorieren, wenn... wird auf Basis einer Bedingung verhindert, dass bestimmte Datensätze in einer Datenbanktabelle aktualisiert werden. Die Aktion Ignorieren, wenn... lässt sich nur in Verbindung mit einer anderen Datenbankaktion (z.B. Rest einfügen) sinnvoll einsetzen. Wenn Sie z.B. Daten von einer XML-Quelldatei auf eine Zieldatenbank mappen, können Sie eine Ignorieren, wenn...-Bedingung konfigurieren, um zu überprüfen, ob ein bestimmtes Feld in der XML-Quelldatei mit einem Feld (normalerweise ein Primärschlüsselwert) im Zieldatenbankdatensatz übereinstimmt. Wenn die Ignorieren, wenn...-Bedingung erfüllt wird (d.h. wenn die beiden Felder gleich sind), so wird der Datenbankdatensatz ignoriert, wenn das Mapping ausgeführt wird und es wird die nächste definierte Aktion (z.B. Rest einfügen) ausgeführt.
In diesem Beispiel wird gezeigt, wie Sie auf Basis des Ergebnisses der Ignorieren, wenn...-Bedingung Datensätze in eine Datenbanktabelle einfügen.
Im Beispiel werden die folgenden Dateien verwendet:
•altova-cmpy-extra.xml - enthält die Quelldaten, die in die Datenbank eingefügt werden sollen
•Altova_Hierarchical.xsd - das Schema, anhand dessen die obige Instanzdatei validiert wird
•Altova.sqlite - die Zieldatenbank, die aktualisiert werden soll.
Sie finden all diese Dateien im Ordner <Dokumente>\Altova\MapForce2023\MapForceExamples\. Der vollständige Pfad wurde in der Folge aus Gründen der Einfachheit weggelassen.
Im Mapping in diesem Beispiel wird eine Beispieldatenbankdatei geändert. Es wird empfohlen, eine Sicherungskopie der Originaldatenbank zu erstellen und mit einer neuen Kopie zu arbeiten, bevor Sie die unten stehende Anleitung befolgen. Dadurch stellen Sie sicher, dass die Originaldaten nicht überschrieben werden und Sie dasselbe Ergebnis, wie unten beschrieben, erhalten. Nähere Informationen dazu finden Sie unter Ausführen von Mappings, die Datenbanken modifizieren. |
Ziel des Mappings ist das folgende:
•Wenn in der XML-Quelldatei und in der Zieltabelle "Person" Personendatensätze mit demselben PrimaryKey vorhanden sind, so wird an diesen keine Aktion ausgeführt (d.h sie werden ignoriert).
•Wenn in der Tabelle "Person" Personendatensätze vorhanden sind, die die obige Bedingung nicht erfüllen, darf auch an diesen keine Aktion durchgeführt werden.
•Datensätze aus der XML-Quelldatei, die keine Entsprechung (keinen Primärschlüssel) in der Tabelle "Person" haben, müssen als neu behandelt werden und werden mit einem neuen Primärschlüssel in die Tabelle "Person" eingefügt.
Gehen Sie dazu folgendermaßen vor:
Schritt 1: Fügen Sie die XML-Quellkomponente ein
•Klicken Sie im Menü Einfügen auf XML-Schema/Datei und navigieren Sie zur Datei Altova_Hierarchical.xsd. Wenn Sie aufgefordert werden, eine Instanzdatei anzugeben, navigieren Sie zur Datei altova-cmpy-extra.xml.
Schritt 2: Fügen Sie die Zieldatenbank ein
•Klicken Sie im Menü Einfügen auf Datenbank und befolgen Sie die Anweisungen des Assistenten, um eine Verbindung zu Altova.sqlite herzustellen (siehe Hinzufügen einer Datenbank zum Mapping).
Schritt 3: Ziehen Sie die Verbindungen
•Ziehen Sie die Mapping-Verbindungen wie unten gezeigt

Schritt 4: Konfigurieren Sie die "Ignorieren, wenn... Rest einfügen"-Aktionen
1.Klicken Sie auf die Schaltfläche Aktion: Einfügen ( ) neben der Tabelle "Person".
2.Wählen Sie neben Aktion an Datensatz den Eintrag Ignorieren, wenn... . Dadurch wird die Datenbankaktion in eine auf einer Bedingung basierende Ignorieren-Aktion geändert, d.h. der aktuelle Datensatz wird nur ignoriert, wenn eine Bedingung erfüllt wird (siehe nächster Schritt).
3. | Wählen Sie neben PrimaryKey den Wert gleich aus, wie unten gezeigt. Damit wird die Ignorieren-Bedingung definiert, d.h. der Datenbankdatensatz wird nur ignoriert, wenn sein PrimaryKey-Wert gleich dem PrimaryKey-Wert aus dem Mapping ist. |

4. | Aktivieren Sie optional das Kontrollkästchen NULL gleich. In diesem Beispiel spielt das Kontrollkästchen keine Rolle, da weder das Feld PrimaryKey in der XML-Quelldatei noch das Feld PrimaryKey in der Datenbank Nullwerte enthält. Wenn Ihre Daten jedoch Nullwerte enthalten und solche Nullwerte als identisch behandelt werden sollen, sollten Sie dieses Kontrollkästchen aktivieren, da Sie sonst unerwünschte Ergebnisse erhalten könnten. Nähere Informationen dazu finden Sie unter Behandlung von Nullwerten in Datenbankaktionen. |
5. | Klicken Sie auf Aktion anhängen. Daraufhin wird rechts von der vorhandenen Ignorieren, wenn-Aktion eine neue Aktion hinzugefügt. Konfigurieren Sie die neue Aktion als Rest einfügen, wobei sie PrimaryKey wie unten gezeigt auf max() + 1 setzen. |

In der Abbildung oben wurden die Datenbankaktionen den Zielen des Mappings entsprechend konfiguriert, d.h. der Datensatz wird nur dann übersprungen, wenn die Ignorieren, wenn..-Bedingung zutrifft. Andernfalls wird der Datensatz eingefügt. Mit der Option "gemappter Wert" wird festgelegt, dass alle Felder des Datensatzes anhand der Werte aus dem Mapping befüllt werden. Mit der Option max() + 1 wird ein neuer eindeutiger Primärschlüsselwert für den Datensatz generiert.
6. | Klicken Sie auf OK, um das Dialogfeld zu schließen. Beachten Sie, dass im Mapping anstelle der Schaltfläche Aktion: Einfügen ![]() |
Schritt 5: Vorschau auf das Mapping und Aktualisieren der Datenbank
Klicken Sie auf das Fenster Ausgabe, um eine Vorschau auf das Mapping zu sehen. Es wird ein SQL-Skript generiert, das Aktionen enthält, die an der Datenbank ausgeführt werden sollen. Das Skript hat die Datenbank noch nicht geändert; dies dient nur zur Vorschau. So führen Sie das Skript an der Datenbank aus:
•Klicken Sie im Menü Ausgabe auf SQL-Script ausführen.
Anmerkung: | Das Ausführen des SQL-Skripts direkt von MapForce aus ist nur eine der Methoden, um eine Datenbank zu aktualisieren. Siehe auch Ausführen von Mappings, die Datenbanken modifizieren. |
Wenn Sie die Tabelle "Person" im Fenster "DB-Abfrage" von MapForce öffnen (siehe Anzeigen und Abfragen von Datenbanken), sehen Sie als Ergebnis des Mappings Folgendes:
•Alle Datenbankdatensätze, für die es Primärschlüsselentsprechungen in der XML-Datei gab, haben die Ignorieren, wenn..-Bedingung erfüllt und sind unverändert geblieben. Beispiele dafür sind die Datensätze mit den Primärschlüsseln 1, 2, 3, 4 und 5.
•Alle Datenbankdatensätze, für die es in der XML-Datei keine Primärschlüsselentsprechungen gab, haben die Ignorieren, wenn..-Bedingung nicht erfüllt, sind aber unverändert geblieben. Beispiele dafür sind die Datensätze mit den Primärschlüsseln 6, 7, 8, 9, 10, 11, 12 und 13.
•Es wurden neue Datensätze in die Tabelle "Person" eingefügt (Datensätze, für die in der Datenbank noch kein Schlüssel vorhanden war). Beispiele dafür sind die Datensätze mit den Primärschlüsseln 30 und 31 in der XML-Quelldatei. Diese Datensätze wurden mit den neuen Primärschlüsseln 22 bzw. 23 in die Datenbank eingefügt.

Die Tabelle "Person" nach Aktualisierung der Datenbank