Funktionsweise des Papierkorb in AG-VIP SQL (ab Version 2.02.001)
Die Papierkorbfunktion in AG-VIP SQL
Der Papierkorb in AG-VIP SQL ist eine spezielle Datenbank Funktion, die das Löschen von Adressen und Tickets überwacht.
Das Löschen von untergeordneten Datensätzen, wie Zusatztabellen, Kennzeichenlisten und einzelne Eingabefelder werden nicht überwacht.
Die Datensätze werden im Moment der Löschung gesichert und können exakt so wiederhergestellt werden.
Gelöschte Datensätze werden nicht durch AG-VIP SQL bearbeitet. Tickets werden nicht automatisch verschoben. Die Datensätze erscheinen in keiner Auswertung oder Reports.
Wird eine Adresse gelöscht, sind damit auch alle untergeordneten Tickets mit gelöscht. Wird nur ein Ticket gelöscht, bleibt wie bei einem normalen Löschvorgang die Adresse erhalten.
Ein- und Ausschalten des Papierkorbes
Der Papierkorb wird als Funktion über die Globalen Einstellungen ein- bzw. ausgeschaltet.
Ist der Papierkorb ausgeschaltet (Vorhaltezeit = 0 Tage), werden Datensätze sofort und augenblicklich gelöscht. Datensätze, die so gelöscht wurden, können nicht wiederhergestellt werden.
Nach dem Ausschalten des Papierkorbs kann es noch eine Zeit dauern bis alle Datensätze endgültig gelöscht wurden.
Wird eine Vorhaltezeit >=1 Tage eingestellt, so verbleiben die Datensätze für mindestens diesen eingestellten Zeitraum erhalten und können in dem Zustand, in dem Sie bei Löschung vorlagen, wiederhergestellt werden.
Leeren des Papierkorbes
Das Leeren des Papierkorbs geschieht automatisch im Hintergrund in festgesetzten Intervallen. Alle Adressen und Tickets, die länger als die Anzahl der eingestellten Tage im Papierkorb liegen, werden endgültig gelöscht.
Wiederherstellen von Datensätzen
Die Wiederherstellung von Datensätzen finden Sie im Anwenderhandbuch beschrieben.
- Öffnen Sie die entsprechende Tabelle im freien Arbeiten.
- Wählen Sie die Funktion Papierkorb öffnen.
- Nun können Sie auswählen, welchen Papierkorb Sie öffnen wollen (Adressen oder Tickets) und angeben von wem oder in welchem Zeitraum die Daten gelöscht wurden.
- Nun ist auch eine Wiederherstellung möglich.
Datenbank Implementierung
In der Tabelle für Adressen und Tickets existiert ein zusätzliches, nicht sichtbares Feld mit dem Namen IdUserDelete. Ist ein Datensatz aktiv (nicht gelöscht), enthält dieses Feld immer den Wert NULL. Beim Löschen über den Papierkorb wird hier der Benutzer eingetragen, der den Löschvorgang ausgelöst hat.
Alle Abfragen, Reports, Auswertungen und Makros berücksichtigen gelöschte Datensätze. Das heißt diese Datensätze sind zwar in der Tabelle, werden aber nie berücksichtigt.
Um die Behandlung von gelöschten Datensätzen zu erleichtern, wurden Views für alle betroffenen Tabellen eingebaut. Diese Views heißen identisch zu den Datentabellen, nur beginnen Sie nicht mit dem Kürzel tbl, sondern view. Eine Auswertung über diese Views zeigt immer nur aktive Datensätze, die nicht gelöscht wurden.
Eigene SQL Statements
Problematisch sind eigene SQL Statements oder Abfragen, die direkt auf die Tabellen von AG-VIP SQL zugreifen.
Ist die Papierkorb Funktion nicht eingeschaltet, werden alle Datensätze sofort gelöscht und es müssen keine Vorkehrungen getroffen werden.
AG-VIP SQL berücksichtigt bei Makro-Abfragen (Query-Methode) und auch in den Reports bei benutzerdefinierten Abfragen immer auch die gelöschten Datensätze. Hier wird automatisch ein entsprechendes Statement, so umformatiert, dass die eingebauten Views zur Anwendung kommen, die immer Datensätze im Papierkorb berücksichtigen (d.h. diese Datensätze ignorieren).
Bei eingeschalteter Papierkorbfunktion verbleiben gelöschte Datensätze in der gleichen Tabelle. Sie werden nur mit dem Kennzeichen "gelöscht" versehen. Das geschieht durch setzen eines Wertes in das Feld IdUserDelete.
Alle eigenen Abfragen bzw. Statements sollten so gebaut sein, dass die vorgebenenen Views nutzen, damit auch in Tests im SQL Management Studio gleiche Ergebnisse erzielt werden. AG-VIP SQL würde gelöschte Einträge berücksichtigen, aber nicht die Ausführung das Management Studio. Sie können gelöschte Datensätze ausschließen, indem man die Bedingung [IdUserDelete] IS NULL ergänzt oder die entsprechenden Views benutzt.
Dies ist insbesondere wichtig wenn auch die SQL Integration Services oder SQL Reporting genutzt werden.