SQL Mysql update trigger soll neue Zeile einfügen.

berto

Lt. Junior Grade
Registriert
Juni 2011
Beiträge
440
Hallo liebe Leute,

ich sitze jetzt leider schon viel zu lange an einem Problem und Google scheint auch nicht willens zu sein, mir zu helfen...

Das Problem ist folgendes:

Ich habe eine Tabelle mit einem Leistungskatalog(mit Preisen). Zusätzlich soll nun eine Historie aufgezeichnet werden. Dies wollte ich dadurch erzielen, dass ich einen Zeitraum bei jedem record angebe, wann er gültig ist (eine Spalte für start timestamp eine für end timestamp).
Das ganze macht natürlich nur dann Sinn, wenn ich für alte Einträge auch eine eiegne Zeile habe.

Daher habe ich nun einen Trigger geschrieben, der eine Preisänderung abfängt, den gültigkeitsbereich richtig stellt, eine neue Zeile mit den alten Werten erstellt und dann noch eine andere Tabelle updated, damit die Historie valide ist,

Nun das Problem:
und zwar ist das der Teil "eine neue Zeile mit den alten Werten erstellt"... denn MySQL lässt es nicht zu, dass ein Trigger eine andere Zeile in der Tabelle für die er definiert ist angreift....

hättet ihr einen Vorschlag wie ich das lösen könnte? oder vielleicht sogar noch einen Vorschlag wie man das ganze Design für die Historie besser lösen könnte?

Vielen, vielen Dank im voraus,
lg Simon
 
Abseits von Technik ein kleiner Tip: Lies dich mal in die Thematik "Slow Changing Dimensions (SDC) Type 2" ein. Das ist nämlich das, was du machen willst.

Wichtig für dich: Dimensions (oder History Tabellen wie du sie nennst) enthalten nicht nur die "abgelaufenen" Datensätze sondern auch die Aktuellen, was z.B. eine Valid von bis Spalte in der Master Table unnötig macht.

Versuche deine Problem vom Standpunkt einer SCD Type 2 logisch anders anzugehen.

Hier ein Ansatz wie so eine Lösung aussehen könnte:
http://databobjr.blogspot.co.at/2011/11/maintain-slow-changing-dimension-type-2.html
 
Zurück
Oben