AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Trigger mit Prüfung
Thema durchsuchen
Ansicht
Themen-Optionen

Trigger mit Prüfung

Ein Thema von it-frosch · begonnen am 19. Okt 2005 · letzter Beitrag vom 20. Okt 2005
Antwort Antwort
it-frosch

Registriert seit: 19. Okt 2005
2 Beiträge
 
#1

Trigger mit Prüfung

  Alt 19. Okt 2005, 14:06
Datenbank: Firebird • Version: 1.0 • Zugriff über: SQL
Hallo,

ich habe heute meinen ersten Trigger erstellt.
Er tut auch das was er soll. Nun möchte ich allerdings eine Prüfung mit einbauen, da es sein kann daß eine Auftragsnummer mehrfach auftauchen kann.
SQL-Code:
SET TERM # ;
/* Bei Anlegen eines neuen Auftrags diesen als Kostenträger anlegen */
CREATE TRIGGER FIBUKTRG_upd FOR auftrag
After Insert AS
  BEGIN
   [b] if new.auftragnr not in (select kostentraeger from fibuktrg) Then [/b] <-----Prüfung
    INSERT INTO FIBUKTRG (KOSTENTRAEGER, SPRACHCODE, BEZEICHNUNG, INFIBUGEB, VORLNR, GSNR) VALUES (new.AUFTRAGNR, '1',new.OBJEKTBEZ , NULL, NULL, NULL);
  END #
SET TERM ; #
Allerdings bekomme ich da die folgende Meldung:
SQL-Code:
/* Bei Anlegen eines neuen Auftrags diesen als Kostenträger anlegen */
CREATE TRIGGER FIBUKTRG_upd FOR auftrag
After Insert AS
  BEGIN
    if new.auftragnr not in (select kostentraeger from fibuktrg) then
    INSERT INTO FIBUKTRG (KOSTENTRAEGER, SPRACHCODE, BEZEICHNUNG, INFIBUGEB, VORLNR, GSNR) VALUES (new.AUFTRAGNR, '1',new.OBJEKTBEZ , NULL, NULL, NULL);
  END )
Message: isc_dsql_prepare failed

SQL Message : -104
Invalid token

Engine Code : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -104
Token unknown - line 7, char 8
new
Wo liegt denn nun der Fehler.

[edit=Sharky]SQL-Tags eingefügt. Mfg, Sharky[/edit]
Es dankt und grüßt der IT-Frosch
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#2

Re: Trigger mit Prüfung

  Alt 19. Okt 2005, 19:47
Hallo it-frosch,

als Erstes muß der Ausdruck in einem IF () Then-Statement bei FB/IB in Klammern eingeschlossen sein.
Außerdem mußt du in deinem Fall mit EXISTS arbeiten.
Versuchs mal damit.

SQL-Code:
IF ( NOT EXISTS (select * from fibuktrg kostentraeger = new.auftragnr ) THEN
  INSERT INTO FIBUKTRG (KOSTENTRAEGER, SPRACHCODE, BEZEICHNUNG, INFIBUGEB, VORLNR, GSNR)
  VALUES (new.AUFTRAGNR, '1',new.OBJEKTBEZ , NULL, NULL, NULL);
alex
Alexander
  Mit Zitat antworten Zitat
it-frosch

Registriert seit: 19. Okt 2005
2 Beiträge
 
#3

Re: Trigger mit Prüfung

  Alt 20. Okt 2005, 15:16
Hallo Alex,

wenn ich noch das fehlende where und die schließende Klammer ergänze funktioniert es.
( NOT EXISTS (select * from fibuktrg where kostentraeger = new.auftragnr )) Danke schön, jetzt ist alles ok.
Es dankt und grüßt der IT-Frosch
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz