Collection Contents Zurück Weiter PDF

MobiLink Benutzerhandbuch

Synchronisationsskripten erstellen

Skripten für den Download von Zeilen schreiben

download_delete_cursor-Skripten schreiben


Sie schreiben download_delete_cursor-Skripten, um Zeilen aus einer entfernten Datenbank zu löschen. Sie müssen für jede Tabelle der entfernten Datenbank, aus der Sie im Verlauf einer Synchronisation Zeilen löschen möchten, eines dieser Skripten schreiben.

Es ist nicht möglich, Zeilen aus der konsolidierten Datenbank einfach zu löschen, damit sie in den entfernten Datenbanken nicht mehr enthalten sind. Sie müssen die Primärschlüssel für gelöschte Zeilen berücksichtigen und diese Primärschlüssel mit Ihrem download_delete_cursor auswählen. Für die Erreichung dieses Ziels gibt es zwei Methoden:

Der MobiLink-Synchronisationsserver löscht Zeilen aus der entfernten Datenbank, indem er Primärschlüsselwerte aus der konsolidierten Datenbank auswählt und sie an die entfernte Datenbank weitergibt. Wenn die Werte mit den Werten eines Primärschlüssels in der entfernten Datenbank übereinstimmen, wird die betreffende Zeile gelöscht.

Jedes download_delete_cursor-Skript muss alle Spaltenwerte auswählen, die im Primärschlüssel der entsprechenden entfernten Tabelle enthalten sind. Das Skript kann zusätzlich auch alle anderen Spalten auswählen. Diese Funktion ist aber eigentlich nur aus Gründen der Kompatibilität zu älteren Clients enthalten. Das Auswählen der zusätzlichen Spalten ist wenig effizient, da die Datenbank-Engine auf diese Weise mehr Daten abrufen muss. Vorausgesetzt, es handelt sich bei dem Client nicht um eine alte Struktur, werden die zusätzlichen Werte vom MobiLink-Synchronisationsserver sofort übergangen. Diese zusätzlichen Werte werden nur auf ältere Clients übertragen.

Alle Zeilen aus einer Tabelle löschen 

Wenn MobiLink ein download_delete_cursor-Skript für eine Zeile findet, die einen Nullwert enthält, werden alle Daten in der entfernten Tabelle gelöscht. Die Anzahl der Nullwerte im download_delete_cursor-Skript kann der Anzahl der Primärschlüsselspalten oder der Gesamtzahl der Spalten in der Tabelle entsprechen.

Das folgende download_delete_cursor-SQL-Skript löscht z.B. alle Zeilen in einer Tabelle, in der zwei Primärschlüsselspalten enthalten sind. Dieses Beispiel ist für Adaptive Server Anywhere-, Adaptive Server Enterprise- und Microsoft SQL Server-Datenbanken geeignet.

SELECT NULL, NULL

In konsolidierten IBM DB2- und Oracle-Datenbanken müssen Sie eine Durchgangstabelle festlegen, um NULL auszuwählen. Bei IBM DB2 7.1 können Sie die folgende Syntax verwenden:

SELECT NULL FROM SYSIBM.SYSDUMMY1

Bei konsolidierten Oracle-Datenbanken können Sie folgende Syntax verwenden:

SELECT NULL FROM DUAL
Beispiele 

Folgendes Beispiel ist ein download_delete_cursor-Skript für eine entfernte Tabelle, die Mitarbeiterdaten enthält. Der MobiLink-Synchronisationsserver verwendet diese SQL-Anweisung, um den Lösch-Cursor festzulegen. Dieses Skript löscht Informationen über Mitarbeiter, die zur Zeit der Ausführung des Skripts sowohl in der konsolidierten als auch in der entfernten Datenbank vorhanden sind.

SELECT emp_id
FROM employee

Das download_delete_cursor-Skript übernimmt die Parameter "last_download" und "ml_username". Aus dem folgenden Skript ist ersichtlich, wie die einzelnen Parameter eingesetzt werden können, um die Auswahl einzugrenzen.

SELECT order_id
FROM ULOrder
WHERE last_modified > ?
   AND status = 'Approved'
   AND user_name = ?

Diese Beispiele sind in einer Organisation mit vielen Mitarbeitern unter Umständen nicht effizient. Sie können den Löschvorgang effizienter gestalten, indem Sie nur die Zeilen auswählen, die auch in der entfernten Datenbank vorhanden sein könnten. Sie können zum Beispiel die Anzahl der Zeilen begrenzen, indem Sie nur die Personen auswählen, die kürzlich einem neuen Manager zugeteilt wurden. Eine andere Strategie besteht darin, der Clientanwendung zu gestatten, selbst die Zeilen zu löschen. Allerdings ist dies nur dann möglich, wenn die nicht benötigten Zeilen durch eine Regel bestimmt werden. Zeilen können zum Beispiel einen Zeitstempel mit einem Ablaufdatum enthalten. Bevor Sie die Zeilen löschen, verwenden Sie die Anweisung STOP SYNCHRONIZATION DELETE, um zu verhindern, dass die Löschvorgänge bei der nächsten Synchronisation übertragen werden. Führen Sie START SYNCHRONIZATION DELETE sofort anschließend aus, wenn andere Löschungen auf die normale Weise synchronisiert werden sollen.

Siehe auch 

Sie können die in allen UltraLite-Anwendungen integrierte Prüfung der referenziellen Integrität verwenden, um Zeilen besonders effizient zu löschen. Weitere Hinweise finden Sie unter Referenzielle Integrität und Synchronisation.

Weitere Hinweise zum Löschen von Zeilen finden Sie unter


Collection Contents Zurück Weiter PDF