Die Geschäftsregeln für die Tabelle ULOrder lauten folgendermaßen:
Bestellungen werden nur heruntergeladen, wenn sie nicht bestätigt sind oder der Status NULL ist.
Bestellungen können sowohl in der konsolidierten als auch in der entfernten Datenbank geändert werden.
Jede entfernte Datenbank enthält nur die Bestellungen, die einem Mitarbeiter zugeordnet sind.
Bestellungen können in der konsolidierten Datenbank eingefügt, gelöscht oder aktualisiert werden. Die entsprechenden Skripten für diese Vorgänge lauten folgendermaßen:
download_cursor Der erste Parameter im download_cursor-Skript ist der Zeitstempel des letzten Downloads. Er stellt sicher, dass nur Zeilen übertragen werden, die auf der entfernten oder der konsolidierten Datenbank seit der letzten Synchronisation geändert wurden. Der zweite Parameter ist die Mitarbeiter-ID. Mit ihr wird ermittelt, welche Zeilen übertragen werden sollen.
Das download_cursor-Skript für CustDB sieht wie folgt aus:
CALL ULOrderDownload( {ml s.last_table_download}, {ml s.username} ) |
Die ULOrderDownload-Prozedur für CustDB sieht wie folgt aus:
CREATE PROCEDURE ULOrderDownload ( IN LastDownload timestamp, IN EmployeeID integer ) BEGIN SELECT o.order_id, o.cust_id, o.prod_id, o.emp_id, o.disc, o.quant, o.notes, o.status FROM ULOrder o, ULEmpCust ec WHERE o.cust_id = ec.cust_id AND ec.emp_id = EmployeeID AND ( o.last_modified >= LastDownload OR ec.last_modified >= LastDownload) AND ( o.status IS NULL OR o.status != 'Approved' ) AND ( ec.action IS NULL ) END |
download_delete_cursor Das download_delete_cursor-Skript für CustDB sieht wie folgt aus:
SELECT o.order_id FROM ULOrder o, dba.ULEmpCust ec WHERE o.cust_id = ec.cust_id AND ( ( o.status = ''Approved'' AND o.last_modified >= {ml s.last_table_download} ) OR ( ec.action = ''D'' ) ) AND ec.emp_id = {ml s.username} |
Bestellungen können in der entfernten Datenbank eingefügt, gelöscht oder aktualisiert werden. Die entsprechenden Skripten für diese Vorgänge lauten folgendermaßen:
upload_insert Das upload_insert-Skript für CustDB sieht wie folgt aus:
INSERT INTO ULOrder ( order_id, cust_id, prod_id, emp_id, disc, quant, notes, status ) VALUES( {ml r.order_id, r.cust_id, r.prod_id, r.emp_id, r.disc, r.quant, r.notes, r.status } ) |
upload_update Das upload_update-Skript für CustDB sieht wie folgt aus:
UPDATE ULOrder SET cust_id = {ml r.cust_id}, prod_id = {ml r.prod_id}, emp_id = {ml r.emp_id}, disc = {ml r.disc}, quant = {ml r.quant}, notes = {ml r.notes}, status = {ml r.status} WHERE order_id = {ml r.order_id} |
upload_delete Das upload_delete-Skript für CustDB sieht wie folgt aus:
DELETE FROM ULOrder WHERE order_id = {ml r.order_id} |
upload_fetch Das upload_fetch-Skript für CustDB sieht wie folgt aus:
SELECT order_id, cust_id, prod_id, emp_id, disc, quant, notes, status FROM ULOrder WHERE order_id = {ml r.order_id} |
upload_old_row_insert Das upload_old_row_insert-Skript für CustDB sieht wie folgt aus:
INSERT INTO ULOldOrder ( order_id, cust_id, prod_id, emp_id, disc, quant, notes, status ) VALUES( {ml r.order_id, r.cust_id, r.prod_id, r.emp_id, r.disc, r.quant, r.notes, r.status } ) |
upload_new_row_insert Das upload_new_row_insert-Skript für CustDB sieht wie folgt aus:
INSERT INTO ULNewOrder ( order_id, cust_id, prod_id, emp_id, disc, quant, notes, status ) VALUES( {ml r.order_id, r.cust_id, r.prod_id, r.emp_id, r.disc, r.quant, r.notes, r.status } ) |
resolve_conflict Das resolve_conflict-Skript für CustDB sieht wie folgt aus:
CALL ULResolveOrderConflict |
Die ULResolveOrderConflict-Prozedur für CustDB sieht wie folgt aus:
CREATE PROCEDURE ULResolveOrderConflict() BEGIN -- approval overrides denial IF 'Approved' = (SELECT status FROM ULNewOrder) THEN UPDATE ULOrder o SET o.status = n.status, o.notes = n.notes FROM ULNewOrder n WHERE o.order_id = n.order_id; END IF; DELETE FROM ULOldOrder; DELETE FROM ULNewOrder; END |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |