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