Änderungsverfolgung

Guten Tag!

Ich möchte immer, wenn ein Datensatz geändert wird, Einträge in die Datensatzlog Tabelle schreiben. Diese möchte ich folgendermassen aufbauen:

Datensatzlog
--------------------
ID_DATENSATZLOG
Tabelle
Datensatz
Alter Wert
Neuer Wert
Benutzer
Timestamp
--------------------


Jetzt stellt sich mir die Frage, wie ich am Besten die alter Wert, neuer Wert Veränderung herausfinde. Gibt es beim Update Befehl die Möglichkeit, herauszukriegen, welche Werte geändert wurden ?
Oder muss ich bevor ich den Datensatz Update, alle Werte aus der Datenbank lesen und sie mit den zu schreibenden Werten vergleichen ?
Was wäre der Beste Ansatz ? Hat jemand eine andere Idee ?

Gruess

Ruth
 
Du könntest für jedes Feld in dem Formular noch zusätzlich ein versteckes Feld machen. Dort trägst Du dann ebenfalls die aktuell in der DB gespeicherten Daten ein.

Wenn jetzt jemand auf Speichern klickt, kannst Du bevor Du updatest den Inhalt der "sichtbaren" Formularfelder mit den "unsichtbaren" vergleichen ohne das Du nochmal den Datensatz einlesen musst.

Gruß Thomas
 
Wenn du etwas verändern möchtest, dann liest du doch erst das vorhandene aus der DB aus und speicherst es in einer Variablen.... oder?

Wenn du nun die Variable hast und dann auf senden geklickt wird, kannst du doch den Inhalt der Variablen vergleichen und wenn was verändert wurde, speicherst du alle Daten und führst die Veränderung in der DB aus...
Wenn nix verändert wurde dann kannst du dir auch das erneute eintragen in die DB ersparen.

Prüfe einfach beide Variablen ( Inhalt der DB, Rückgabewert des Forumulars ) und entscheide dann was gemacht werden soll...

Wäre am einfachsten und effektivsten.

MFG
Sandro
 
Ich würde immer nur die Veränderungen zur Nachfolgeversion und schließlich die komplette aktuelle Version speichern. Damit würden keine redundanten Daten gespeichert, alle Versionen wären wiederherstellbar und die aktuelle Version stünde ohne große Verarbeitung direkt zur Verfügung.
 
Werde das wohl wie GiFt-ZwErG vorgeschlagen hat umsetzen.
Habe mir zuerst überlegt ob ich sowas wie ein Datenrecovery machen soll,
also dass man in die anderen Zustände des Datensatzes zurückkehren kann.
Hab mich aber eben aus Redundanz gründen dagegen entschieden.
Werde aus dem Grund nur, was sich geändert hat in einer wie bereits im ersten Beitrag von mir beschriebenen Tabelle ablegen.
Und dann müsste man halt von Hand den Datensatz zurück tragen,
falls etwas falsch ist.

Danke für eure Antworten:)
 
Zurück