[NEWSboard IBMi Forum]

Thema: Trigger

Hybrid View

  1. #1
    Registriert seit
    Oct 2004
    Beiträge
    13

    Trigger

    Hallo,
    Ich will einen SQL Auslöser mit Database Navigator erstellen.

    Hier das SQL-Statement welches ich ausprobiert habe:
    ------------------------------------------------
    WHEN (PRISTW - PRSOLLW) > 0
    THEN SET newrow.PRABWEI = 'Entspricht'
    ELSE SET newrow.PRABWEI = 'Entspricht nicht';
    END
    ------------------------------------------------


    folgende Fehlermeldung wird zurückgegeben:
    --------------------------------------------------------------------
    Token ) ungültig. Gültige Token: < > = <> <= !< !> != >= ¬< ¬> ¬= IN IS NOT LIKE BETWEEN.

    Nachrichten-ID:SQL0104

    Ursache . . . . : Bei Token ) wurde ein Syntaxfehler entdeckt. Token ) ist kein gültiges Token. < > = <> <= !< !> != >= ¬< ¬> ¬= IN IS NOT LIKE BETWEEN ist eine Teilliste gültiger Token. Diese Liste geht davon aus, dass die Anweisung bis zu diesem Token korrekt ist. Es kann eine frühere Stelle in der Anweisung fehlerhaft sein, aber bis zu dieser Stelle scheint die Syntax gültig zu sein.Fehlerbeseitigung: Einen der folgenden Schritte durchführen und die Anforderung wiederholen:- SQL-Anweisung im Bereich des Token ) überprüfen. Anweisung korrigieren. Der Fehler kann ein fehlendes Komma oder Anführungszeichen sein, er kann in einem falsch geschriebenen Wort oder in der Anordnung der Klauseln begründet sein.- Ist das fehlerhafte Token , die Anweisung korrigieren, da sie mit einer ungültigen Klausel endet.
    --------------------------------------------------------------------


    /Jürgen

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von juergenkemeter
    Hallo,
    Ich will einen SQL Auslöser mit Database Navigator erstellen.

    Hier das SQL-Statement welches ich ausprobiert habe:
    ------------------------------------------------
    WHEN (PRISTW - PRSOLLW) > 0
    THEN SET newrow.PRABWEI = 'Entspricht'
    ELSE SET newrow.PRABWEI = 'Entspricht nicht';
    END
    ------------------------------------------------


    folgende Fehlermeldung wird zurückgegeben:
    --------------------------------------------------------------------
    Token ) ungültig. Gültige Token: < > = <> <= !< !> != >= ¬< ¬> ¬= IN IS NOT LIKE BETWEEN.

    Nachrichten-ID:SQL0104

    Ursache . . . . : Bei Token ) wurde ein Syntaxfehler entdeckt. Token ) ist kein gültiges Token. < > = <> <= !< !> != >= ¬< ¬> ¬= IN IS NOT LIKE BETWEEN ist eine Teilliste gültiger Token. Diese Liste geht davon aus, dass die Anweisung bis zu diesem Token korrekt ist. Es kann eine frühere Stelle in der Anweisung fehlerhaft sein, aber bis zu dieser Stelle scheint die Syntax gültig zu sein.Fehlerbeseitigung: Einen der folgenden Schritte durchführen und die Anforderung wiederholen:- SQL-Anweisung im Bereich des Token ) überprüfen. Anweisung korrigieren. Der Fehler kann ein fehlendes Komma oder Anführungszeichen sein, er kann in einem falsch geschriebenen Wort oder in der Anordnung der Klauseln begründet sein.- Ist das fehlerhafte Token , die Anweisung korrigieren, da sie mit einer ungültigen Klausel endet.
    --------------------------------------------------------------------


    /Jürgen
    WHEN wird dann verwendet wenn der Trigger nur unter einer bestimmten Bedingung aktiviert werden soll. Bei Dir soll er jedoch immer aktiviert werden, Du willt nur unterschiedlich reagieren.

    Du brauchst entweder eine IF oder eine CASE-Abfrage

    Begin
    If (PRISTW - PRSOLLW) > 0 THEN SET newrow.PRABWEI = 'Entspricht';
    Else SET newrow.PRABWEI = 'Entspricht nicht';
    End

    oder

    Begin
    Case When PRISTW - RRSOLLW > 0 THEN SET newrow.PRABWEI = 'Entspricht';
    Else SET newrow.PRABWEI = 'Entspricht nicht';
    End

    Wo kommen die Felder PRISTW und PRSOLLW her?
    Du hast zu dem Zeitpunkt, zu dem der Trigger aktiviert wird nur den alten und/oder den neuen Satz zur Verfügung. Die Felder müssten m.E. Qualifiziert werden, also NewRow.PRISTW.

    Nimm Dir doch mal das Redbook Stored Procedures, Triggers und User Defined Functions zur Brust, da ist alles genau erklärt.

    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
    Oct 2004
    Beiträge
    13

    Lösung!

    Hi,
    alles klar, hab kürzlich die Lösung gefunden:
    ---------------------------------------------
    WHEN (PRISTW is not NULL and PRSOLLW is not NULL)
    BEGIN
    CASE
    WHEN PRISTW - PRSOLLW > 0
    THEN SET newrow.PRABWEI = 'Entspricht';
    ELSE
    SET newrow.PRABWEI = 'Entspricht nicht';
    END CASE;
    END
    ---------------------------------------------

    Ciao,
    Jürgen

Similar Threads

  1. SQL Trigger
    By Jenne in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 19-01-07, 09:24
  2. SQL Trigger
    By bigmoon in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 14-09-06, 18:26
  3. create view oder constraint oder trigger oder ... ?
    By antvik in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 02-08-06, 18:04
  4. Trigger
    By peter.kinne in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 20-04-06, 10:21
  5. Trigger / ILE RPG
    By Frank Pusch in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 17-05-01, 09:34

Berechtigungen

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