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

SQL Anywhere 11.0.1 (Deutsch) » UltraLite - Datenbankverwaltung » UltraLite als MobiLink-Client » UltraLite-Clients » Synchronisation in UltraLite planen

 

Tabellenreihenfolge in UltraLite

Mit dem Synchronisationsparameter TableOrder können Sie die Reihenfolge der Synchronisationsvorgänge steuern. Wenn Sie die Tabellenreihenfolge für die Synchronisation festlegen möchten, können Sie den Parameter TableOrder in Ihren Programmcode aufnehmen oder als Teil des Dienstprogramms ulsync während des Testens verwenden. Der Parameter TableOrder legt die Reihenfolge der Tabellen für den Upload fest. Weitere Hinweise finden Sie unter Synchronisationsparameter Additional Parameters.

Die Tabellenfolge muss nur dann explizit eingestellt werden, wenn Ihre UltraLite-Datenbank folgende Charakteristika aufweist:

  • Fremdschlüsselzyklen. Sie müssen dann alle Tabellen auflisten, die Teil eines Zyklus sind.

  • Fremdschlüsselbeziehungen, die sich von den Beziehungen in der konsolidierten Datenbank unterscheiden.

Synchronisationsprobleme mit Fremdschlüsselzyklen vermeiden

Die Tabellenreihenfolge ist besonders wichtig bei UltraLite-Datenbanken mit Fremdschlüsselzyklen. Sie bilden einen Zyklus, indem Sie mehrere Tabellen so miteinander verknüpfen, dass ein Kreis entsteht. Wenn sich Zyklen in der konsolidierten Datenbank und der entfernten UltraLite-Datenbank unterscheiden, führt dies jedoch zu komplexen Strukturen. Daher sind Fremdschlüsselzyklen nicht zu empfehlen.

Wenn Sie Fremdschlüsselzyklen verwenden, müssen Sie Ihre Tabellen in die richtige Reihenfolge bringen, damit Vorgänge für eine Primärtabelle Vorrang vor der zugehörigen Fremdtabelle haben. Ein TableOrder-Parameter stellt sicher, dass beim Einfügen in der Fremdtabelle die referenzielle Integrität für den Fremdschlüssel erfüllt ist (und ebenso für andere Vorgänge, wie etwa Löschungen).

Sie können zusätzlich zur Tabellenreihenfolge auch eine andere Methode verwenden, um Synchronisationsprobleme zu vermeiden: Prüfen Sie die referenzielle Integrität, bevor Sie Vorgänge festschreiben. Wenn Ihre konsolidierte Datenbank eine SQL Anywhere-Datenbank ist, setzen Sie einen der Fremdschlüssel auf check on commit. Damit stellen Sie sicher, dass die referenzielle Integrität des Fremdschlüssels während des Festschreibens und nicht beim Einleiten des Vorgangs geprüft wird. Zum Beispiel:

CREATE TABLE c (
    id INTEGER NOT NULL PRIMARY KEY,
    c_pk INTEGER NOT NULL
);
CREATE TABLE p (
    pk INTEGER NOT NULL PRIMARY KEY,
    c_id INTEGER NOT NULL,
    FOREIGN KEY p_to_c (c_id) REFERENCES c(id)
);
ALTER TABLE c
   ADD FOREIGN KEY c_to_p (c_pk)
   REFERENCES p(pk)
   CHECK ON COMMIT;

Wenn Sie als konsolidierte Datenbank die Datenbank eines anderen Herstellers verwenden, überprüfen Sie, ob die Datenbank über ähnliche Methoden zur Überprüfung der referenziellen Integrität verfügt. Ist dies der Fall, sollten Sie diese Methode implementieren. Anderfalls müssen Sie die Tabellenbeziehungen umgestalten, um alle Fremdschlüsselzyklen zu entfernen.

Siehe auch