[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Feb 2011
    Beiträge
    25

    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

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.309
    Zitat Zitat von Haunted Beitrag anzeigen
    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.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.371
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.309
    Zitat Zitat von Fuerchau Beitrag anzeigen
    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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.371
    Da ja von einem Rollback-Fall gesprochen wurde, nehme ich mal ganz stark an, dass die getriggerten Dateien journalisiert werden .
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Feb 2011
    Beiträge
    25
    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 ?

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.371
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.309
    Zitat Zitat von Fuerchau Beitrag anzeigen
    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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #9
    Registriert seit
    Feb 2011
    Beiträge
    25
    gibt es eine möglichkeit auf commits bzw. rollbacks zu reagieren ? hab in der IBM doku nichts explizites dazu gefunden.

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.371

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.309
    ... 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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.309
    ... damit müsste man aber in die Applikation eingreifen, das kann der Trigger nicht erledigen...
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Volltextsuche unter DB2/400
    By WPF in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 19-06-15, 10:26
  2. HTML Daten in DB2/400
    By leber in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 05-01-07, 09:15
  3. Subselect in case when auf DB2/400
    By Flo4711 in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 29-09-06, 17:31
  4. Datentransfer DB2/400 <---> Oracle mittels JAVA
    By agutenbru in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 05-04-06, 10:11
  5. DB2/400 zu XML Datei
    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
  •