Anmelden

View Full Version : Inserttrigger auf intern beschriebene Datei



tinewww
22-07-04, 09:36
Hallo,

hat jemand Erfahrung mit einem Inserttrigger auf einer intern beschriebenen Datei?

Wir haben hier noch "alte" von der S36 konvertierte RPG-Programme, die noch interne Dateibeschreibungen verwenden!
Auf eine solche Datei habe ich einen Inserttrigger gelegt.

Dieser wird anscheindend manchmal auch bei Updates ausgeführt.

Kann das sein? Hat das Betriebssystem vielleicht Schwierigkeiten bei internen Beschreibungen "echte" Inserts zu erkennen?

Wäre für eine "schnelle" Antwort echt dankbar!

Fuerchau
22-07-04, 10:32
Mit intern/extern hat das nichts zu tun !
Ein Insert-Trigger wird NIE bei Update aufgerufen, so viel ist sicher.
Es gibt allerdings Programme, die einen Update per Delete/Insert erledigen, da es früher sonst keine Möglichkeit der Schlüsseländerung gab.
Ein Update mit Änderung eines Key-Feldes wurde abgewiesen (CPF-Meldung).
Vielleicht liegt das hier vor ?

Ausserdem kannst du ja die Art des Ereignisses im Trigger-Header prüfen.

tinewww
22-07-04, 11:08
Nein, leider nicht.

Ich habe mittlerweile herausgefunden, dass nach Programmabbrüchen der Trigger anschließend mehrfach ausgelöst wird, obwohl in die getriggerte Datei nur ein Satz geschrieben wird.

Ich glaube, der Grund dafür ist folgender: Bei der getriggerten Datei handelt es sich um eine temporäre Arbeitsdatei. Da sie beim Programmaufruf neu erstellt wird, hänge ich jedesmal den Trigger neu an und remove ihn, sobald er nicht mehr benötigt wird.

Bei Programmabbrüchen bleibt nun sowohl die Datei bestehen, wie auch der angehängte Trigger. Bei erneutem Aufruf hänge ich den Trigger auch erneut dran. D.h. zu diesem Zeitpunkt hat die Datei wahrscheinlich 2 gleiche Trigger.

Kann das sein?

Fuerchau
22-07-04, 11:20
Stimmt auffallend ! Bis zu 300 Trigger sind erlaubt.
Am besten machst du vor der Erstellung zur Sicherheit erst mal einen DLTF, dessen Fehler du einfach ignorierst.

tinewww
22-07-04, 11:32
Ja, ok.

Und vielen Dank für die schnellen Antworten!