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 - Erste Orientierung » MobiLink-Technologie » MobiLink-Synchronisation » Der Synchronisationsprozess

 

Referenzielle Integrität und Synchronisation

Mit Ausnahme von UltraLiteJ-Clients erzwingen alle MobiLink-Clients für BlackBerry oder J2SE referenzielle Integrität, wenn sie den Download in die entfernte Datenbank integrieren.

Der MobiLink-Client löscht standardmäßig automatisch alle Zeilen, die die referenzielle Integrität verletzen, damit die Downloadtransaktion nicht fehlschlägt.

Diese Funktion bietet folgende Vorteile:

  • Schutz vor Fehlern in den Synchronisationsskripten. Aufgrund der Flexibilität der Skripten ist es möglich, dass ungewollt ein Download von Zeilen erfolgt, die die Integrität der Datenbank verletzen würden. Der MobiLink-Client bewahrt automatisch die referenzielle Integrität, ohne dass ein Eingriff von außen erforderlich wird.

  • Sie können diesen Mechanismus zur referenziellen Integrität einsetzen, um Daten aus einer entfernten Datenbank effizient zu löschen. Wenn Sie einen Löschvorgang für einen übergeordneten Datensatz senden, entfernt der MobiLink-Client automatisch alle untergeordneten Datensätze. Damit wird das von MobiLink an die entfernte Datenbank zu übertragende Datenaufkommen erheblich reduziert.

MobiLink-Clients geben wie folgt Benachrichtigungen aus, wenn sie explizit Zeilen löschen müssen, um die referenzielle Integrität zu erhalten:

  • Für SQL Server Anywhere-Clients schreibt dbmlsync einen Eintrag in das Log. Außerdem können Sie dbmlsync-Ereignis-Hooks verwenden. Siehe:

  • Für UltraLite-Clients wird die Warnung SQLE_ROW_DELETED_TO_MAINTAIN_REFERENTIAL_INTEGRITY ausgegeben. Diese Warnung verwendet den Tabellennamen als Parameter. Um die referenzielle Integrität aufrechtzuerhalten, wird die Warnung für jede gelöschte Zeile ausgegeben. Ihre Anwendung kann die Warnung ignorieren, wenn mit der Synchronisation fortgefahren werden soll. Falls Sie die Warnmeldungen explizit behandeln wollen, können Sie sie mit der Fehler-Callback-Funktion abfangen und beispielsweise die Anzahl der gelöschten Zeilen ermitteln.

    Wenn die Synchronisation bei Ausgabe der Warnung abgebrochen werden soll, müssen Sie eine Synchronisationsbeobachtungsfunktion implementieren und dann der Beobachtungsfunktion (z.B. durch eine globale Variable) von der Fehler-Callback-Funktion aus ein Signal senden. In diesem Fall schlägt die Synchronisation beim nächsten Aufruf der Beobachtungsfunktion fehl.

 Referenzielle Integrität wird am Ende der Transaktion geprüft
 Beispiel
 Das Standardverhalten ändern