Umfangreicher Trigger über mehrere Tabellen und Schemata in MySQL 5.0.24

shur0y

Grünschnabel
Hallo liebes Forum!
Ich habe mich hier schon durchgewälzt, allerdings benötige ich jetzt Eure fachmännische Hilfe.

Ich habe mehrere Tabellen und Schemata:

Schema JOBROUTER

In der Tabelle <app_reprfng> stehen die Spalten DWDOCID und PROCESSID
In der Tabelle <jr_incidents> stehen die Spalten PROCESSID und WORKFLOWID

Schema DWDATA

In der Tabelle <dokumentenpool> stehen die Spalten DWDOCID und WORKFLOWID


Jetzt möchte ich einen TRIGGER, der die WORKFLOWID aus der <jr_incidents> in die Spalte WORKFLOWID zum Wert der DWDOCID in der Tabelle <dokumentenpool> schreibt.

Der Trigger soll starten, wenn neue Zeilen in die <app_reprfng> mit STEP = 1 geschrieben werden.

Problem ist, dass durch das Frontend-System sich die WORKFLOWID in der <jr_incidents> ändert und dadurch neue Zeilen entstehen. Die PROCESSID bleibt gleich. Auch in der <app_reprfng> werden dadurch neue Zeilen geschrieben, allerdings mit anderen Werten bei "STEP", sodass diese in dem Fall in der Tabelle ignoriert werden können. (DWDOCID bleibt immer gleich)

Beispiel:
Am Anfang habe ich in der <jr_incidents> eine Zeile mit den Werten

PROCESSID = c5d3abcf2f8e4236bbff8508240987d7
WORKFLOWID = 17cb03006f504d6eb385757d88273d49
STEP = 1
INCIDENT = 230

Jetzt klicke ich im Frontend auf "Starten" und die Werte ändern sich folgendermaßen:

Es wird eine neue Zeile generiert, die folgende Werte enthält:

PROCESSID = c5d3abcf2f8e4236bbff8508240987d7
WORKFLOWID = 93ba1eea84fe9b5d51ee8827927bfa0b
STEP = 2
INCIDENT = 230

Die neue WORKFLOWID soll nun übertragen werden in das Feld WORKFLOWID zur entsprechenden DWDOCID in der Tabelle <dokumentenpool> des Schemas DWDATA. Ich muss also über die PROCESSID in der <app_reprfng> schauen, zu welcher DWDOCID die WORKFLOWID gehört.

Im Frontend kann n-mal auf "Starten" geklickt werden. Es werden immer neue weitere Zeilen zu dieser PROCESSID angelegt. Klicke ich ein zweites Mal zu dieser ID auf "starten" wird eine weitere Zeile generiert:

PROCESSID = c5d3abcf2f8e4236bbff8508240987d7
WORKFLOWID = 5b74cbcffa24aa81ca339531c166c980
STEP = 3
INCIDENT = 230

Nun soll wieder die neue, aktuelle WORKFLOWID übertragen werden. usw...

Parallel dazu werden neben der <jr_incidents> auch in der <app_reprfng> neue Zeilen angelegt. Wie in der <jr_incidents> werden STEP hochgezählt, allerdings beinhaltet diese Tabelle keine WORKFLOWID (deswegen muss diese aus der <jr_incidents> ausgelesen werden). Trotzdem muss man darauf achten, dass der Trigger nicht jedes Mal startet, sondern nur wenn STEP = 1 ist. :)

PS: Die DWDOCID gibt es in der <jr_incidents> nicht!

Wie muss der Trigger aussehen? Ich bin leider mit meinen Basis-Kenntnissen überfragt. Ich hoffe, ich habe Euch jetzt nicht allzusehr verwirrt :) Zusammenfassend: Ich benötige einmalig die erste und dann immer die neueste WORKFLOWID in dem Datenbankfeld WORKFLOWID der Tabelle <dokumentenpool> im Schema DWDATA - und zwar in der richtigen Zeile zur DWDOCID :D

Gerne lade ich ein paar Screenshots des Query Browsers hoch, falls es weiterhelfen sollte.

Ich verwende MySQL in der Version 5.0.24.

Vielen herzlichen Dank für Eure Hilfe!

shur0y
 
kleiner Nachtrag: Vielleicht hilft es, erstmal einen View über alle Tabellen-Inhalte zu erstellen?!
 
Zurück