![]() |
Datenbank: ORACLE • Version: 9 • Zugriff über: DATABASE
Trigger -> Problem
Hallo zusammen,
bin noch nicht so fit mit Triggern, dieser hier klappt nur halb:
Delphi-Quellcode:
Der Fehler muss in dem SubSelect liegen. Was mache ich da falsch ?
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' 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; / Gruss Holger |
Re: Trigger -> Problem
Was soll der trigger machen, was macht er, was funktioniert nicht?
|
Re: Trigger -> Problem
Das kompiliert er:
Delphi-Quellcode:
der Teil klappt nicht: (kommt an den oberen Teil noch angehängt)
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; /
Delphi-Quellcode:
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. 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; / LEISTUNGSWERTE.ANZAHL muss gleich AUFTRAEGE.DB_REGISTER sein und LEISTUNGSWERTE.ANLAGENNUMMER muss gleich AUFTRAEGE.ANLAGENNUMMER sein. Gruss Holger |
Re: Trigger -> Problem
Ohne mir das im Detail angesehen zu haben, fällt mir auf, dass die Klammerung nicht stimmt.
|
Re: Trigger -> Problem
Das war es schon.
Trigger wurde erstellt. Juhuuu... Danke Holger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz