[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2003
    Beiträge
    221

    Probleme mit einem Trigger

    Hallo,

    ich habe eine Tabelle "TAB001". An dieser Tabelle hängt der Trigger "TRG001" bei dem Ereignis *AFTER *INSERT.

    Der Trigger machte bisher immer das was er tun sollte. Nun habe ich ihn heute ändern müssen, weil das Feld "STATUS" mit dem Wert "2" geupdatet werden muß. Das habe ich mir ziemlich easy vorgestellt. Neue Routine vor *INLR und fertig. Leider spielt da das Betriebssystem nicht mit. Ich bekomme den Fehler "CPF5032 Satz xx in Teldatei yyy ist bereits für diesen Job gesperrt."

    Und nun ? Der Update soll/muss in dem Trigger erfolgen.

    Bin für jeden Tipp dankbar.

    peter
    Peter Kinne
    EDV-Beratung
    www.kinne.de

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von peter.kinne
    Hallo,

    ich habe eine Tabelle "TAB001". An dieser Tabelle hängt der Trigger "TRG001" bei dem Ereignis *AFTER *INSERT.

    Der Trigger machte bisher immer das was er tun sollte. Nun habe ich ihn heute ändern müssen, weil das Feld "STATUS" mit dem Wert "2" geupdatet werden muß. Das habe ich mir ziemlich easy vorgestellt. Neue Routine vor *INLR und fertig. Leider spielt da das Betriebssystem nicht mit. Ich bekomme den Fehler "CPF5032 Satz xx in Teldatei yyy ist bereits für diesen Job gesperrt."

    Und nun ? Der Update soll/muss in dem Trigger erfolgen.

    Bin für jeden Tipp dankbar.

    peter
    Du musst den Trigger abhängen, das Programm umwandeln und anschliessend wieder anhängen. Der Trigger kann nicht abgehängt werden, solange die Datei noch irgendwo im Zugriff ist.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Sep 2003
    Beiträge
    221
    Hallo Birgitta,

    das ist mir klar und ich habe es ja so gemacht. Denn ansonsten würde ja die neue Version des Triggers nicht auf den Fehler laufen.

    Peter
    Peter Kinne
    EDV-Beratung
    www.kinne.de

  4. #4
    Registriert seit
    Sep 2003
    Beiträge
    221
    Ich konnte mir schon weitest gehend selber helfen. Und zwar habe ich den Trigger nochmals abgehängt und neu angehängt. Dabei habe ich dann das Schlüsselwort ALWREPCHG = Wiederholte Änderungen zulässig auf *YES gesetzt.

    Danach läuft der Trigger und er macht genau das, was er machen sollen. Ich bin mir aber nicht sicher, ob dieses Schlüsselwort noch ander Konsequenzen hat, die ich jetzt noch nicht kenne. In der Hilfe ist wie immer nichts angegeben.
    Peter Kinne
    EDV-Beratung
    www.kinne.de

  5. #5
    Registriert seit
    Jan 2001
    Beiträge
    850
    Hallo

    wieso ist nnichts angeben?

    Wiederholte Änderung zulassen (ALWREPCHG) - Hilfetext

    Gibt an, ob wiederholte Änderungen an einem Satz innerhalb
    eines Auslösers zulässig sind.

    Gültige Werte sind:

    *NO
    Wiederholte Änderungen an einem Satz innerhalb eines
    Auslösers sind nicht zulässig.

    *YES
    Wiederholte Änderungen an einem Satz innerhalb eines
    Weitere ...
    F2=Erweit. Hilfetext F10=Zum Anfang F12=Abbrechen
    F20=Vergrößern F24=Weitere Tasten


    gruss Michael

  6. #6
    Registriert seit
    Sep 2003
    Beiträge
    221
    Zitat Zitat von mk
    Hallo

    wieso ist nnichts angeben?

    Wiederholte Änderung zulassen (ALWREPCHG) - Hilfetext

    Gibt an, ob wiederholte Änderungen an einem Satz innerhalb
    eines Auslösers zulässig sind.

    Gültige Werte sind:

    *NO
    Wiederholte Änderungen an einem Satz innerhalb eines
    Auslösers sind nicht zulässig.

    *YES
    Wiederholte Änderungen an einem Satz innerhalb eines
    Weitere ...
    F2=Erweit. Hilfetext F10=Zum Anfang F12=Abbrechen
    F20=Vergrößern F24=Weitere Tasten


    gruss Michael

    Hallo Michael,

    ich gebe mich geschlagen. Hast ja Recht.

    Peter
    Peter Kinne
    EDV-Beratung
    www.kinne.de

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Aus Performance-Gründen würde ich den Trigger mit BEFORE INSERT erstellen, du kannst den Puffer ändern und sparst dir das Lesen und erneute updaten.
    Zumal durch deine Methode ggf. ein AFTER/BEFORE UPDATE-Trigger zusätzlich ausgelöst wird.
    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
    Sep 2003
    Beiträge
    221
    Zitat Zitat von Fuerchau
    Aus Performance-Gründen würde ich den Trigger mit BEFORE INSERT erstellen, du kannst den Puffer ändern und sparst dir das Lesen und erneute updaten.
    Zumal durch deine Methode ggf. ein AFTER/BEFORE UPDATE-Trigger zusätzlich ausgelöst wird.
    Wie kann ich den Puffer ändern ? Ich habe immer gedacht, dass ein Triggerprogramm den Wert nicht zurückgibt. Kann ich mit dir wegen diesen Thema mal telefonieren ? Das wäre bestimmt einfacher wie hier zu schreiben.
    Peter Kinne
    EDV-Beratung
    www.kinne.de

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Auf Grund der Reihenfolge der Aufrufe und Schnittstellen passiert doch folgendes:

    BEFORE INSERT/UPDATE
    After-Immage kann geändert werden, da erst danach der Insert ausgeführt wird.

    AFTER INSERT/UPDATE
    After-Immage kann zwar geändert werden, hat aber keine Auswirkungen mehr. Eigentlich nur sinnvoll um zusätzliche Aktionen auszuführen (Insert/Update anderer Dateien)

    Was die Kommunikation/Nicht-Kommunikation angeht, so hast du nur bedingt Recht:
    Satzpuffer geben ihre veränderten Inhalte natürlich nicht zurück, aber du kannst natürlich über *LDA o.ä. Informationen austauschen.
    Zusätzlich besteht noch die Möglichkeit Abbruch-Meldungen zu senden (ESC-Nachrichten) z.b. über QMHSNDPM-API (SNDPGMMSG) um die Aktion abzubrechen.
    Dies macht natürlich nur bei BEFORE-Triggern Sinn, da die Aktion ja sonst schon erledigt ist.
    Ausserdem funktionieren ESC-NAchrichten auch bei ODBC, während *LDA da wohl wenig effektiv ist.

    Ausserdem, wofür macht man denn Trigger ?
    Um Funktionen unabhängig von den Programmen die sie auslösen auszuführen. Eine spezifische Kommunikation (ausser eben ESC-Nachrichten) macht da wenig Sinn, da Trigger ja auch z.B. per STRSQL, STRQMQRY, REXX, UPDDTA usw. ausgelöst 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

  10. #10
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von peter.kinne
    Wie kann ich den Puffer ändern ? Ich habe immer gedacht, dass ein Triggerprogramm den Wert nicht zurückgibt. Kann ich mit dir wegen diesen Thema mal telefonieren ? Das wäre bestimmt einfacher wie hier zu schreiben.
    Hast Du Dir schon mal folgende Redbooks angeschaut?
    Stored Procedures, Triggers and User Defined Functions on DB2 Universal Database for iSeries
    Modernizing IBM eServer iSeries Application Data Access - A Roadmap Cornerstone

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. SQL Trigger
    By Jenne in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 19-01-07, 09:24
  2. Probleme mit V5R3M5
    By heini in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 12-12-06, 11:42
  3. SQL-Performance Probleme ODBC
    By berndl in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 13-10-06, 09:28
  4. SQL Trigger
    By bigmoon in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 14-09-06, 18:26
  5. IFS als Netzlaufwerk - Probleme bekannt?
    By kuempi von stein in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 19-07-06, 13:14

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •