Einzelnen Beitrag anzeigen

Artur

Registriert seit: 31. Dez 2006
Ort: Augsburg
70 Beiträge
 
Delphi XE8 Enterprise
 
#6

Re: Firebird: Prüfsumme für Datensatz berech. b. Ins/Update

  Alt 4. Feb 2007, 13:53
Zu Hansa:

Wenn die Datensätze gesperrt werden, muss der Kollege in der Zentrale den Anruf auf Papier notieren, weil ja der AD noch nicht zurück ist. Auch nicht so prick

Nein im Ernst:
a) Die AD kommen 1..2 mal die Woche in die Firma und replizieren nicht jeden Abend. Es ist im voraus nicht 100% klar, wo die sich herumtreiben, weil Kaltbesuche oder kurzfristige Anforderungen durch Kunden vorkommen.
b) Wir haben Gebietsverkäufer, die alle Fabrikate betreuen und zur Unterstützung "Spezialisten" mit einem speziellen Aufgabengebiet, die die gleichen Kunden auch anfahren.
c) Parallel dazu kann es wirklich passieren, dass ein Kunde in der Firma anruft bzw. jemand vom Innendienst von sich aus den Kunden anruft (und wegen einem Projekt nachfragt [wir arbeiten im Bereich Gebäudeinstallation und verkaufen Lichtschalter, Leuchten, Brüstungskanäle und solche Dinge]).

Aus den Gründen kann ich schon keine Datensätze sperren.

Die TimeStamps werden natürlich generiert, aber ich habe keine Kontrolle darüber, ob die Laptops sauber eingestellt sind (kleine Firma ohne Admin => kein Zeitserver, etc., sonst würde ich mich auch nicht mit der Programmierung der DB quälen ).


Also was soll die Checksum? Wenn die Replikation angestoßen wird, soll das Programm prüfen, ob die aktuelle Checksum auf dem Server die gleiche ist, wie die beim letzten Replizieren. Wenn nicht, gibt es zwei Möglichkeiten:
- am Laptop wurde nix geändert, also her mit den Daten
- am Laptop wurde auch geändert, also irgendeine Fehlerbehandlung für zeitgleich doppelt geänderte Daten
(vermutlich: temp-Datensatz anlegen und Innendienst ein Fenster öffnen, dass er klärt, welche Daten richtig sind)


Zu mkinzler:

Das ist quasi meine Frage: Wie kann ich in SQL so eine Prüfsumme berechnen und bekomme sie in den
Trigger? Händisch über Delphi mit Events der Datasets ist mir das klar: Ich habe eine Procedure die den MD5 aus einem String berechnet. Ich würde alle fgelder des aktiven Datnesatzes als String zusammenknallen und durch die Prozedur laufen lassen und das Feld damit füttern.

Aber in SQL bin ich noch nicht tief genug drin, um so was in der Art zu machen.
Gibt es einen SQL Befehl im Firebird zum Generieren von Checksummen?


Ciao,

Artur
Artur
  Mit Zitat antworten Zitat