Um zu veranschaulichen, wie Sie Datumskonflikte lösen können, nehmen wir eine Tabelle in einem Kontaktverwaltungssystem mit einer Spalte an, die die aktuelleren Kontakte mit den einzelnen Kunden enthält.
Ein Vertreter spricht mit einem Kunden an einem Freitag, sendet jedoch seine Änderungen an die konsolidierte Datenbank erst am Montag. Inzwischen trifft ein zweiter Vertreter den Kunden am Samstag und aktualisiert die Änderungen am gleichen Abend.
Es gibt keinen Konflikt, wenn die Aktualisierung vom Samstag an die konsolidierte Datenbank repliziert wird, aber wenn die Aktualisierung am Montag eintrifft, findet sie die Zeile bereits geändert vor.
Standardmäßig würde die Montag-Aktualisierung übernommen werden, wodurch die Spalte die falsche Information enthält, dass der letzte Kontakt am Freitag stattgefunden hat. Aktualisierungskonflikte in dieser Spalte müssen jedoch gelöst werden, indem das aktuellere Datum in die Zeile eingefügt wird.
Der folgende RESOLVE UPDATE-Trigger wählt den aktuelleren der beiden neuen Werte aus und gibt ihn in die Datenbank ein.
CREATE TRIGGER contact_date RESOLVE UPDATE ON Contacts REFERENCING OLD AS old_name NEW AS new_name FOR EACH ROW BEGIN IF new_name.contact_date < old_name.contact_date THEN SET new_name.contact_date = old_name.contact_date END IF END; |
Wenn der Wert, der aktualisiert wird, höher (später) als der Wert ist, der ihn ersetzen würde, wird der neue Wert so eingestellt, dass der Eintrag unverändert bleibt.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |