PDA

View Full Version : Doktorspiele oder wie erstelle ich ein SQL-Trigger



KingofKning
17-07-20, 09:23
Hallo *all,
ich habe hier ein tolles Kaba Benzing Terminal welches mir die Daten in eine Datei stellt.
Leider ist bei einem dieser Terminal der Parameter falsch gesetzt und der Wert des Schlüssel ist zu kurz.
Da bei Kaba Benzig die letzten Dinosaurierer die sich mit AS/400 und Bcomm auskannten schon vor 10 Jahren gestorben sind, muß ich jetzt rumdoktorn.
Ein Lösungansatz von mir ist es einen SQL-Trigger zu erstellen der mir beim Insert prüft ob der Schlüsselwert lang genug ist.

Dateiaufbau:

create table testdat (BBFINR char(03), BBBLOC char(250))

Datensatz Alt:
insert into testdat values('001',
'01ABC0B1120071609210020014<000260')

Datensatz Neu:

insert into testdat values('001',
'01ABC0B1120071609210020014<0000260') <- Eine Null mehr

Trigger Experiment:



create trigger Schluessel
after update of bbbloc on testdat
referencing old as old_testdat
new as new_testdat
for each row mode db2sql
when (substr(old_testdat.bbbloc, 34, 1) = ' ')
begin atomic
bbbloc = 'Neu';
end


Später soll statt Neu natürlich der zusammengesetzte String da stehen.

Ich habe mir das Buch "iSeriesDB2 Universal Database for iSeries SQL Reference" genommen, werde aber leider aus den Beispielen nicht schlau.

Wer kann mir denn bitte die richtige Syntax sagen damit im Datensatz später der Wert so da steht '01ABC0B1120071609210020014<0000260'

Für Hinweise die zur Ergreifung der Fehler finden wäre ich dankbar.

GG 3970

BenderD
17-07-20, 09:32
... ein After Trigger kann den Datensatz nicht mehr ändern. Das muss ein before trigger sein und der muss repeatable change erlauben (habe ich nur mit externem Trigger gemacht)

D*B

KingofKning
17-07-20, 12:03
So nach einem kleinen Mittagsspaziergang kam mir die zündende Idee und jetzt läuft es wie gewünscht.