-
Tabellenänderungen abfangen in DB2/400
Hallo zusammen,
wir versuchen aktuell Änderungen die in einer Tabelle in db2/400 gemacht werden abzufangen und weiter zu verarbeiten.
Unsere aktuelle Lösung basiert auf Triggern. Hier ist nur das Problem das diese immer ausgelöst werden, auch wenn die Transaction nicht abgeschlossen ist (bei einem Rollback bzw. Fehler hätten wir fehlerhafte Daten). Hatte jemand schonmal ein ähnliches Problem, bzw. kennt eine Lösung dafür ?
Danke.
MfG
Haunted
-
Zitat von Haunted
Hallo zusammen,
wir versuchen aktuell Änderungen die in einer Tabelle in db2/400 gemacht werden abzufangen und weiter zu verarbeiten.
Unsere aktuelle Lösung basiert auf Triggern. Hier ist nur das Problem das diese immer ausgelöst werden, auch wenn die Transaction nicht abgeschlossen ist (bei einem Rollback bzw. Fehler hätten wir fehlerhafte Daten). Hatte jemand schonmal ein ähnliches Problem, bzw. kennt eine Lösung dafür ?
Danke.
MfG
Haunted
... dann muss der Trigger in derselben Transaktion mitlaufen.
-
Zusätzlich müssen die Dateien, in die entsprechende Informationen verarbeitet wurden im selben Journal aufgezeichnet werden, so dass im Falle eines Rollback ebenso auch diese Änderungen rückgängig gemacht werden.
Soweit ich weiß, wird aber im Rollback-Fall ein Update/Delete-Trigger aufgerufen, so dass man auch hier entsprechend reagieren kann um die Änderungen rückgängig zu machen, die ggf. nicht journalisiert wurden.
-
Zitat von Fuerchau
Soweit ich weiß, wird aber im Rollback-Fall ein Update/Delete-Trigger aufgerufen, so dass man auch hier entsprechend reagieren kann um die Änderungen rückgängig zu machen, die ggf. nicht journalisiert wurden.
... wenn der Trigger nicht unter Commit läuft, kann er nicht sicherstellen, dass er die nachfolgende Änderung durchkriegt, da die Satzsperren dann nicht von der Transaktion gesteuert werden. (und über RI und die Wirkung von restrict müsste man evt. nochmal nachdenken...)
D*B
-
Da ja von einem Rollback-Fall gesprochen wurde, nehme ich mal ganz stark an, dass die getriggerten Dateien journalisiert werden .
-
Hallo,
danke für eure Antworten
Nun noch eins, was ich wohl schon hätte im ersten Post schreiben solln, und zwar ist der Trigger ein RPGLE Programm welches auf eine DTAQ zugreift und die geänderte relativeID zum Programm schickt damit dieses es verarbeiten kann.
Ist der zugriff auf die DTAQ in diesem fall auch durch die Transaktion gesteuert ?
-
DTAQ's können nicht journalisiert werden, da man ja beliebig versenden kann.
Hier musst du mit dem verarbeitenden Programm eine Rückgängig-Aktion vereinbaren.
Der Insert-Trigger muss z.B. "NEW...." senden, ein Update-Trigger dann "UPD..." und ein Lösch-Trigger dann "DEL...".
Im Falle eines Rollback wird nach einem Insert der Delete-Trigger aufgerufen, nach einem Update wieder der Update-Trigger mit umgekehrten Immages.
Ich denke, damit kann man auch Rückgängig-Aktionen steuern.
-
Zitat von Fuerchau
DTAQ's können nicht journalisiert werden, da man ja beliebig versenden kann.
Hier musst du mit dem verarbeitenden Programm eine Rückgängig-Aktion vereinbaren.
Der Insert-Trigger muss z.B. "NEW...." senden, ein Update-Trigger dann "UPD..." und ein Lösch-Trigger dann "DEL...".
Im Falle eines Rollback wird nach einem Insert der Delete-Trigger aufgerufen, nach einem Update wieder der Update-Trigger mit umgekehrten Immages.
Ich denke, damit kann man auch Rückgängig-Aktionen steuern.
... ich habe schon wieder und immer noch Einwände:
DTAQs kann man journalisieren, aber nicht unter Transaktionssteuerung laufen lassen.
Das mit dem hin und zurück wird nix, wer sagt denn, dass die Änderung durchzukriegen ist (Sperren! und alles ist auch nicht reversibel). Entweder man ändert das design, oder man puffert die Einträge im Programm und sendet die erst beim commit.
D*B
-
gibt es eine möglichkeit auf commits bzw. rollbacks zu reagieren ? hab in der IBM doku nichts explizites dazu gefunden.
-
-
... ganz so einfach ist das nicht, der Trigger kriegt den Commit nicht mit - und dann noch das Gedöns mit den Aktivierungsgruppen...
Aber, falls dich das nicht schreckt...
http://publib.boulder.ibm.com/infoce...2FQTNADDCR.htm
Möglicherweise wäre es einfacher in der Transaktion parallel den Inhalt in eine Table wegzuschreiben und den Consumer Prozess darauf warten zu lassen, ob der Satz freigegeben wird, oder verschwindet.
D*B
-
Zitat von Fuerchau
... damit müsste man aber in die Applikation eingreifen, das kann der Trigger nicht erledigen...
Similar Threads
-
By WPF in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 19-06-15, 10:26
-
By leber in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 05-01-07, 09:15
-
By Flo4711 in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 29-09-06, 17:31
-
By agutenbru in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 05-04-06, 10:11
-
By HaHe in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 10-09-04, 16:20
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks