Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 (Deutsch) » MobiLink - Serveradministration » MobiLink-Ereignisse » Schreiben von Synchronisationsskripten » Skripten für den Download von Zeilen

 

download_delete_cursor-Skripten

Sie schreiben download_delete_cursor-Skripten, um Zeilen aus einer entfernten Datenbank zu löschen. Sie müssen für jede Tabelle in der entfernten Datenbank, die in den Download einbezogen ist, eines dieser Skripten schreiben. Wenn Sie keine Zeilen löschen möchten, definieren Sie die einzelnen Skripten als --{ml_ignore}. Alternativ dazu können Sie mit der Systemprozedur ml_add_missing_dnld_scripts fehlende Download-Skripten als ignoriert definieren. Siehe ml_add_missing_dnld_scripts-Systemprozedur.

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:

  • Logische Löschungen   Löschen Sie die Zeile nicht physisch in der konsolidierten Datenbank. Verwenden Sie stattdessen eine Statusspalte, die protokolliert, ob Zeilen gültig sind. Dies vereinfacht den download_delete_cursor. Der download_cursor und andere Anwendungen müssen jedoch möglicherweise geändert werden, um die Statusspalte zu erkennen und zu verwenden. Wenn Sie eine Spalte mit der letzten Änderung verwenden, die den Löschzeitpunkt enthält, und außerdem den letzten Download-Zeitpunkt für die einzelnen entfernten Datenbanken protokollieren, können Sie die Zeile physisch löschen, wenn alle Downloadzeiten der entfernten Datenbanken nach dem Zeitpunkt der Löschung liegen.

  • Schattentabelle   Für jede Tabelle, für die Sie Löschungen verfolgen wollen, erstellen Sie eine Schattentabelle mit zwei Spalten, die den Primärschlüssel für die Tabelle und einen Zeitstempel enthalten. Erstellen Sie einen Trigger, der den Primärschlüssel und den Zeitstempel in die Schattentabelle einfügt, wenn eine Zeile gelöscht wird. Ihr download_delete_cursor kann dann auf diese Schattentabelle zugreifen. Wie bei logischen Löschungen können Sie die Zeile aus der Schattentabelle löschen, wenn alle entfernten Datenbanken die entsprechenden Daten eingelesen haben.

Der MobiLink-Server 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, mit dem gelöschte Zeilen heruntergeladen werden sollen, muss eine SELECT-Anweisung oder einen Aufruf einer gespeicherten Prozedur enthalten, die eine Ergebnismenge zurückgibt. Der MobiLink-Server verwendet diese Anweisung, um einen Cursor in der konsolidierten Datenbank zu definieren.

  • Wenn Sie immer wollen, dass ein download_delete_cursor-Skript keine Zeilen auswählt, definieren Sie das Skript als --{ml_ignore}.

  • Diese Anweisung muss alle Spalten auswählen, die mit den Primärschlüsselspalten in der entsprechenden Tabelle der entfernten Datenbank übereinstimmen. Die Spalten in der konsolidierten Datenbank können andere Namen haben als die entsprechenden Spalten in der entfernten Datenbank. Ihre Datentypen müssen jedoch kompatibel sein.

  • Die Werte müssen dabei genau in der Reihenfolge ausgewählt werden, in der die entsprechenden Spalten der entfernten Datenbank definiert sind. Es handelt sich dabei um die Reihenfolge, in der die Spalten in der CREATE TABLE-Anweisung aufgeführt sind, mit der die Tabelle erstellt wurde, und nicht um die Reihenfolge in der Anweisung zum Definieren des Primärschlüssels.

  • Wenn Sie einen übergeordneten Datensatz in der entfernten Datenbank mit download_delete_cursor löschen, werden die untergeordneten Datensätze automatisch mitgelöscht. Dies gilt nicht für Blackberry-Geräte.

    Weitere Hinweise zum Löschen von untergeordneten Datensätzen finden Sie unter Referenzielle Integrität und Synchronisation.

 Alle Zeilen in einer Tabelle löschen
 Siehe auch
 Beispiele
 Hinweise