Hallo,
schreibe zum ersten mal einen trigger. Leider funct er nicht, wie ich will:
er betrifft 2 Tabellen:
Tabelle "UNTERSUCHUNG" mit den Spalten PROBE_BEFALLEN und PROBEFL_ID (FK).
Tabelle "PROBEFLAECHE" mit PROBENANZAHL_MIT_ERGEBNIS und PROBEFL_ID (PK).
Es gibt zu jeder PROBEFL_ID mehrere PROBE_BEFALLEN-Einträge in "UNTERSUCHUNG".
Beim update oder delete eines Feldes "PROBE_BEFALLEN" in der Tabelle "UNTERSUCHUNG"
soll die Anzahl der befallen Proben zu der betroffenen Probefl_id in PROBENANZAHL_MIT_ERGEBNIS der Tabelle "PROBEFLAECHE" eingetragen werden.
Wenn also eine Probe befallen ist, soll in der Probefläche mitgezählt werden.
Hier mein Trigger:
CREATE OR REPLACE TRIGGER "PROBEN_TRIGGER" AFTER
DELETE
OR UPDATE OF "PROBE_BEFALLEN" ON "UNTERSUCHUNG" DECLARE
ANZAHL_PROBEN_UNTERSUCHT number;
BEGIN
SELECT COUNT(PROBE_BEFALLEN)
INTO ANZAHL_PROBEN_UNTERSUCHT
FROM UNTERSUCHUNG
WHERE PROBEFL_ID = :new.PROBEFL_ID;
UPDATE PROBEFLAECHE
SET PROBENANZAHL_MIT_ERGEBNIS = ANZAHL_PROBEN_UNTERSUCHT
WHERE PROBEFL_ID = :new.PROBEFL_ID;
END;
Die WHERE-Bedingungen funktionieren so nicht.
("Fehlernder IN- oder OUT-Parameter auf Index::1").
Ich weiß nicht, wie ich an die Probefl_id kommen soll. Geht das überhaupt ?
Danke schon mal für die Aufmerksamkeit ! Vielleicht hat einer eine Idee ?
Vielen Dank und Grüße
Andi
schreibe zum ersten mal einen trigger. Leider funct er nicht, wie ich will:
er betrifft 2 Tabellen:
Tabelle "UNTERSUCHUNG" mit den Spalten PROBE_BEFALLEN und PROBEFL_ID (FK).
Tabelle "PROBEFLAECHE" mit PROBENANZAHL_MIT_ERGEBNIS und PROBEFL_ID (PK).
Es gibt zu jeder PROBEFL_ID mehrere PROBE_BEFALLEN-Einträge in "UNTERSUCHUNG".
Beim update oder delete eines Feldes "PROBE_BEFALLEN" in der Tabelle "UNTERSUCHUNG"
soll die Anzahl der befallen Proben zu der betroffenen Probefl_id in PROBENANZAHL_MIT_ERGEBNIS der Tabelle "PROBEFLAECHE" eingetragen werden.
Wenn also eine Probe befallen ist, soll in der Probefläche mitgezählt werden.
Hier mein Trigger:
CREATE OR REPLACE TRIGGER "PROBEN_TRIGGER" AFTER
DELETE
OR UPDATE OF "PROBE_BEFALLEN" ON "UNTERSUCHUNG" DECLARE
ANZAHL_PROBEN_UNTERSUCHT number;
BEGIN
SELECT COUNT(PROBE_BEFALLEN)
INTO ANZAHL_PROBEN_UNTERSUCHT
FROM UNTERSUCHUNG
WHERE PROBEFL_ID = :new.PROBEFL_ID;
UPDATE PROBEFLAECHE
SET PROBENANZAHL_MIT_ERGEBNIS = ANZAHL_PROBEN_UNTERSUCHT
WHERE PROBEFL_ID = :new.PROBEFL_ID;
END;
Die WHERE-Bedingungen funktionieren so nicht.
("Fehlernder IN- oder OUT-Parameter auf Index::1").
Ich weiß nicht, wie ich an die Probefl_id kommen soll. Geht das überhaupt ?
Danke schon mal für die Aufmerksamkeit ! Vielleicht hat einer eine Idee ?
Vielen Dank und Grüße
Andi
Comment