Guten Tag,
ich versuche gerade einige Funktionen auf den Server auszulagern.
Dazu möchte ich Trigger und stored procs benutzen um Netzwerk und Client zu entlasten.
Nach dem Eintragen einer Vorgabe sollen daraus Detaildatensätze erzeugt werden.
Diese Detaildatensätze sollen auf dem Server erzeugt werden.
Tabelle 1:
ID erzeugt durch Generator, diverse, Vorgabe von, bis, Wochenplan
Tabelle 2:
ID erzeugt durch Generator, diverse, Je Tag einen eindeutigen Verweis auf den Tagesplan
Hier meine Trigger. Dieser scheint korrekt, erzeugt aber keine eindeutigen Werte (Fehler -811)
Ich vermute, das Abfragen des Generators klappt nicht?
Dies ist der Trigger für die ID
Diese ID wird mit Gen_ID(gen_tagesvorgaben,1) abgefragt und incrementiert.
Ich hoffe Ihr könnt mir dabei helfen.
Gruß
Peter
ich versuche gerade einige Funktionen auf den Server auszulagern.
Dazu möchte ich Trigger und stored procs benutzen um Netzwerk und Client zu entlasten.
Nach dem Eintragen einer Vorgabe sollen daraus Detaildatensätze erzeugt werden.
Diese Detaildatensätze sollen auf dem Server erzeugt werden.
Tabelle 1:
ID erzeugt durch Generator, diverse, Vorgabe von, bis, Wochenplan
Tabelle 2:
ID erzeugt durch Generator, diverse, Je Tag einen eindeutigen Verweis auf den Tagesplan
Hier meine Trigger. Dieser scheint korrekt, erzeugt aber keine eindeutigen Werte (Fehler -811)
Ich vermute, das Abfragen des Generators klappt nicht?
Dies ist der Trigger für die ID
Code:
CREATE TRIGGER SET_TAGESVORGABENID FOR TAGESVORGABEN ACTIVE BEFORE INSERT POSITION 0 as begin if (new.ID is null) then new.ID = gen_id(gen_TAGESVORGABEN, 1); if (new.ID = '0') then new.ID = gen_id(gen_TAGESVORGABEN, 1); end
Code:
CREATE OR ALTER trigger arbeitsplaene_ai0 for arbeitsplaene active after insert position 0 AS DECLARE VARIABLE aktMandant integer; DECLARE VARIABLE aktFirma integer; DECLARE VARIABLE aktFiliale integer; DECLARE VARIABLE aktAbteilung integer; DECLARE VARIABLE aktGruppe integer; DECLARE VARIABLE aktMitarbeiter integer; DECLARE VARIABLE laufdatum Date; DECLARE VARIABLE TP integer; DECLARE VARIABLE akttimestamp timestamp; begin laufdatum = new.startdatum; TP = 0; akttimestamp = current_timestamp; while (laufdatum < new.enddatum) do begin if (new.wochenplan is not NULL) then begin if (extract(weekday from laufdatum) = 0) then select SONNTAG from WOCHENPLAENE as W where W.id = ID into :TP; else if (extract(weekday from laufdatum) = 1) then select MONTAG from WOCHENPLAENE as W where W.id = ID into :TP; else if (extract(weekday from laufdatum) = 2) then select DIENSTAG from WOCHENPLAENE as W where W.id = ID into :TP; else if (extract(weekday from laufdatum) = 3) then select MITTWOCH from WOCHENPLAENE as W where W.id = ID into :TP; else if (extract(weekday from laufdatum) = 4) then select DONNERSTAG from WOCHENPLAENE as W where W.id = ID into :TP; else if (extract(weekday from laufdatum) = 5) then select FREITAG from WOCHENPLAENE as W where W.id = ID into :TP; else if (extract(weekday from laufdatum) = 6) then select SAMSTAG from WOCHENPLAENE as W where W.id = ID into :TP; if (TP <> 0) then begin aktMandant = new.Mandant; aktFirma = new.Firma; aktFiliale = new.Filiale; aktAbteilung = new.Abteilung; aktGruppe = new.Gruppe; aktMitarbeiter = new.Mitarbeiter; update or insert INTO TAGESVORGABEN (ID, Mandant, Firma, Filiale, Abteilung, Gruppe, Mitarbeiter, Datum, Tagesplanorig, Tagesplanman, geaendert_am) values (Gen_ID(gen_tagesvorgaben,1), :aktMandant, :aktFirma, :aktFiliale, :aktAbteilung, :aktGruppe, :aktMITARBEITER, :laufdatum, :TP, :TP, :akttimestamp); end TP = 0; end laufdatum = laufdatum + 1; end end
Gruß
Peter
Comment