Abfragen für eine History

Alph4

Neuer Benutzer
Beiträge
2
Hallo,

ich habe ein kleines Problem. Für meine Projektarbeit darf ich eine Datenbank neu aufsetzten und diese funktionsfähig machen.
Eine Funktion die korrigiert wird ist die History Funktion, welche dem Archivieren fertiger Projekte dient. Wichtig anzumerken ist jedoch das sowohl die aktiven als auch die fertigen Projekte in der selben Tabelle geführt werden.
Das habe ich so gelöst:
ein Tupel erhält eine Flag solbald ein bestimmter status eingestellt wird.
Sobald die Flag da ist läuft eine Abfrage, welche den Tupel 1:1 kopiert und in die selbe Tabelle einfügt.
Daraufhin wird eine aktualisierung des Ursprungstupels vollzogen welche die Spalten auf "Null" setzt. Meine Frage ist nun wie kann ich die Aktualisierung gestalten sodass nur das Ursprungstupel verändert wird und kein anderer Datensatz. hab schon ewig im Netz gesucht aber bisher nicht fündig geworden.

Bietet sich für das Obere eine Schleife und/oder ein Trigger an?

Mit freundlichen Grüßen
Alph4
 
Werbung:
Wozu das? Wenn ein Record fertig ist, setze ein Flag. Fertig.

Die komplette DB dient der Inventarverwaltung. Die Projekte sind an jeweils an eine Box gebunden, welche als Inventar zu betrachten ist. Man hat dadurch einen aktiven Datenpool von ca 200 Tupeln und der Rest ist abgeschlossen. Weil ich die Boxnummern indiziert habe und keine Duplikate zulassen möchte, bin ich auf diese Lösung gekommen. Zwar würde der Flag ausreichen aber ich als DB Laie habe das Vorgehen bevorzugt. Wenn ich dann abertausende Datensätze habe will ich keine Redundanzen bzw. Anomalien hervorrufen durch die Boxnummern, vor allem bei den aktiven Tupeln. Wenn ich nicht Indiziere befürchte ich das User unachtsam sind und nicht checken ob ein Datensatz belegt ist oder nicht und diesen dann einfach überschreiben. Ich will praktisch den aktiven Datenpool nicht "abschließen" sondern nur aktualisieren, was auch ich auch für die Formulare als wichtig erachte.

Falls ich hierbei gegen DB-Grundsätze oder Ähnliches verstoße bin ich für Vorschläge sehr dankbar
 
Irgendwie komisch, Du willst die Datensätze 1:1 kopieren und wieder in die Tabelle einfügen, gleichzeitig aber keine Duplikate zulassen. Klingt für mich wie der Versuch der Kreisquadratur.
 
Historisierte Daten speichert man am besten in einer extra Tabelle. Dort kann man dann auch zusätzlich Informationen ablegen z.B. wann die Änderung gemacht wurde etc.
Damit sparst dir das Kennzeichen, sondern musst nur vor dem Update den aktuellen Satz per insert into in die Historisierungstabelle kopieren.

Die Statements dazu generiert man sich idealerweise anhand der Tabellenstruktur.
 
Werbung:
Ergänzend (zu der seperaten Tabelle) würde ich anmerken das Trigger und Schleifen nicht wirklich Alternativen sind, ein Trigger wäre hier durchaus angebracht. Schleifen sind immer zu vermeiden, können aber auch in einem Trigger enthalten sein. Mit einer Schleife allein kannst du das aber nicht umsetzen, durch irgendetwas müsste sie ja ausgelöst werden. Das ist ein bischen wie Äpfel mit Pommes vergleichen...
 
Zurück
Oben