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:
Die Standard-Konfliktlösung verwenden. Siehe Standardlösung für Aktualisierungskonflikte.
Eine benutzerdefinierte Konfliktlösung verwenden, die die VERIFY-Klausel verwendet. Siehe Benutzerdefinierte Konfliktlösung mittels einer VERIFY-Klausel.
Eine benutzerdefinierte Konfliktlösung verwenden, die Trigger verwendet. Siehe Benutzerdefinierte Konfliktlösung mit Trigger.
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
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |