Thema: Delphi Trigger -> Problem

Einzelnen Beitrag anzeigen

HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#3

Re: Trigger -> Problem

  Alt 3. Aug 2007, 12:20
Das kompiliert er:

Delphi-Quellcode:
CREATE OR REPLACE TRIGGER DBP_LETZTE_PRUEFUNG_AIU AFTER INSERT OR UPDATE ON SYSDBP.DBP_AUFTRAEGE
FOR EACH ROW
BEGIN

  UPDATE SYSDBP.DBP_LEISTUNGSWERTE
  SET LETZTE_AEUSSEREPRUEFUNG = :old.AUFTRAGERLEDIGT
  
  WHERE SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER = :old.ANLAGENNUMMER
  AND :old.SIGMA_TAETIGKEIT_ID = '131';

END;
/
der Teil klappt nicht: (kommt an den oberen Teil noch angehängt)

Delphi-Quellcode:
 

AND (:old.AUFTRAGERLEDIGT = (SELECT MAX(:old.AUFTRAGERLEDIGT)
      FROM SYSDBP.DBP_AUFTRAEGE WHERE SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER = :old.ANLAGENNUMMER
      AND SYSDBP.DBP_LEISTUNGSWERTE.ANZAHL = :old.DB_REGISTER AND :old.SIGMA_AUFTYP_ID = '50
      AND :old.STATUS = 'abgeschlossen');
END;
/
Der Trigger soll, wenn ein neuer Datensatz oder ein Datensatz in der Tabelle AUFTRAEGE geändert wird, in der Tabelle LEISTUNGSWERTE, in die Spalte LETZTE_AEUSSEREPRUEFUNG das letzte Datum von der Spalte AUFTRAGERLEDIGT aus der Tabelle AUFTRAEGE schrieben. Einschränkungen sind: In der Tabelle AUFTRAEGE muss Spalte SIGMA_TAETIGKEIT_ID = 131 und die Spalte SIGMA_AUFTYP_ID = 50 und die Spalte STATUS = abgeschlossen sein.
LEISTUNGSWERTE.ANZAHL muss gleich AUFTRAEGE.DB_REGISTER sein und LEISTUNGSWERTE.ANLAGENNUMMER muss gleich AUFTRAEGE.ANLAGENNUMMER sein.

Gruss

Holger
  Mit Zitat antworten Zitat