Die Tabelle Contact enthält den Namen einer Person, die bei einem Kunden arbeitet, sowie einen Fremdschlüssel für den Kunden und eine eindeutige Ganzzahl zur Kennzeichung des Ansprechpartners. Sie enthält außerdem einen last_modified-Zeitstempel und eine Markierung, die anzeigt, ob der Kontakt aktiv ist.
Die Geschäftsregeln für diese Tabelle lauten folgendermaßen:
Ansprechpartnerdaten können in der konsolidierten und in der entfernten Datenbank geändert werden.
Jede entfernte Datenbank enthält nur die Ansprechpartner, die für Kunden arbeiten, denen sie zugeordnet sind.
Wenn die Kundenzuordnung zwischen Vertriebsmitarbeitern geändert wird, müssen Ansprechpartner ebenfalls neu zugeordnet werden.
Ein Trigger in der Customer-Tabelle wird dafür verwendet, die Ansprechpartner aufzunehmen, wenn Angaben zu einem Kunden geändert werden. Der Trigger ändert ausdrücklich die Spalte last_modified der jeweiligen Ansprechpartner, wenn der betreffende Kunde geändert wird:
CREATE TRIGGER UpdateCustomerForContact AFTER UPDATE OF rep_id ORDER 1 ON DBA.Customer REFERENCING OLD AS old_cust NEW as new_cust FOR EACH ROW BEGIN UPDATE Contact SET Contact.last_modified = new_cust.last_modified FROM Contact WHERE Contact.cust_id = new_cust.cust_id END |
Da alle Datensätze der Ansprechpartner aktualisiert werden, wenn ein Kunde geändert wird, verbindet der Trigger den Kunden und die ihm zugewiesenen Ansprechpartner. Wenn ein Kunde geändert wird, werden alle zugeordneten Ansprechpartner ebenfalls geändert. Der Kunde und die zugeordneten Ansprechpartner werden bei der nächsten Synchronisation zusammen heruntergeladen.
download_cursor Das download_cursor-Skript für Contact sieht wie folgt aus:
SELECT contact_id, contact.name, contact.cust_id FROM ( contact JOIN customer ) JOIN salesrep ON contact.cust_id = customer.cust_id AND customer.rep_id = salesrep.rep_id WHERE Contact.last_modified >= ? AND salesrep.ml_username = ? AND Contact.active = 1 |
Dieses Skript ruft alle aktiven Ansprechpartner ab, die seit dem letzten Download durch den Vertriebsmitarbeiter geändert wurden (entweder ausdrücklich oder durch Änderung des betreffenden Kunden) und die dem Vertriebsmitarbeiter zugeordnet sind. Ein Join mit der Customer- und der SalesRep-Tabelle ist erforderlich, um die diesem Vertriebsmitarbeiter zugeordneten Ansprechpartner zu ermitteln.
download_delete_cursor Das download_delete_cursor-Skript für Contact sieht wie folgt aus:
SELECT contact_id FROM ( Contact JOIN Customer ) JOIN SalesRep ON Contact.cust_id = Customer.cust_id AND Customer.rep_id = SalesRep.rep_id WHERE Contact.last_modified >= ? AND Contact.active = 0 |
Die automatische Verwendung kaskadierender referenzieller Integrität durch den MobiLink-Client löscht Ansprechpartner, wenn der entsprechende Kunde aus der entfernten Datenbank gelöscht wird. Das download_delete_cursor-Skript muss somit nur die Ansprechpartner löschen, die als inaktiv markiert sind.
Ansprechpartnerdaten können in der entfernten Datenbank eingefügt, aktualisiert oder gelöscht werden. Die entsprechenden Skripten für diese Vorgänge lauten folgendermaßen:
upload_insert Das folgende upload_insert-Skript fügt eine Zeile in die Contact-Tabelle ein und markiert den Ansprechpartner als aktiv:
INSERT INTO Contact ( contact_id, name, cust_id, active ) VALUES ( ?, ?, ?, 1 ) |
upload_update Das folgende upload_update-Skript ändert die Daten des Ansprechpartners in der konsolidierten Datenbank:
UPDATE Contact SET name = ?, cust_id = ? WHERE contact_id = ? |
In dieser Tabelle wird keine Konflikterkennung durchgeführt.
upload_delete Das folgende upload_delete-Skript markiert den Ansprechpartner in der konsolidierten Datenbank als inaktiv. Es löscht keine Zeile.
UPDATE Contact SET active = 0 WHERE contact_id = ? |
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 |