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

SQL Anywhere 12.0.0 (Deutsch) » SQL Remote » SQL Remote-Systeme erstellen

 

Aktualisierungskonflikte

Aktualisierungskonflikte können dort nicht vorkommen, wo Daten nur gemeinsam gelesen werden, oder wenn jede Zeile (gekennzeichnet durch ihren Primärschlüssel) nur in einer Datenbank aktualisiert wird. Aktualisierungsfehler können nur auftreten, wenn Daten in mehr als einer Datenbank aktualisiert werden.

Um UPDATE-Anweisungen zu replizieren, gibt SQL Remote eine separate UPDATE-Anweisung für jede Zeile aus. Diese einzeiligen Anweisungen können aus einem der folgenden Gründe fehlschlagen:

  • Die zu aktualisierende Zeile unterscheidet sich in einer oder mehreren Spalten   Wenn einer der erwarteten Werte von einem anderen Benutzer geändert wurde, tritt ein Aktualisierungskonflikt auf.

    In entfernten Datenbanken findet die Aktualisierung unabhängig von den Werten in der Zeile statt.

    In der konsolidierten Datenbank lässt SQL Remote Vorgänge zur Konfliktlösung zu. Beispiel: Wenn ein Konflikt erkannt wird, kann die konsolidierte Datenbank Folgendes durchführen:

    Konfliktlösung gilt nicht für Primärschlüssel-Aktualisierungen

    UPDATE-Anweisungskonflikte gelten nicht für Primärschlüssel-Aktualisierungen. Sie dürfen Primärschlüssel in einem SQL Remote-System nicht aktualisieren. Primärschlüssel-Konflikte im System müssen durch die richtige Planung vermieden werden.

  • Die zu aktualisierende Zeile existiert nicht   Jede Zeile ist durch ihre Primärschlüsselwerte gekennzeichnet. Wenn die Zeile gelöscht oder ein Primärschlüssel von einem anderen Benutzer geändert wurde, kann die Zeile, die aktualisiert werden soll, nicht gefunden werden.

    In entfernten Datenbanken findet die Aktualisierung nicht statt.

    In der konsolidierten Datenbank findet die Aktualisierung nicht statt.

  • Eine Tabelle ohne Primärschlüssel oder Eindeutigkeits-Integritätsregel bezieht sich auf alle Spalten in der WHERE-Klausel von replizierten Aktualisierungen   Wenn zwei entfernte Datenbanken separate Aktualisierungen in derselben Zeile durchführen und die Änderungen in die konsolidierte Datenbank replizieren, werden die Änderungen, die zuerst in der konsolidierten Datenbank eintreffen, angewendet, während Änderungen von der zweiten Datenbank nicht angewendet werden.

    Dies führt dazu, dass Datenbanken inkonsistent werden. Alle replizierten Tabellen sollten einen Primärschlüssel oder eine Eindeutigkeits-Integritätsregel aufweisen. Die Spalten in der Integritätsregel sollten nie aktualisiert werden.


Standardlösung für Aktualisierungskonflikte
Benutzerdefinierte Konfliktlösung mittels einer VERIFY-Klausel
Benutzerdefinierte Konfliktlösung mit Trigger