Witam,
Proszę o pomoc ponieważ mam problem nie działa wyzwalacz, poniżej kod:
TRIGGER AUTO_AKTUALIZACJA_C5
AFTER INSERT OR UPDATE OR DELETE ON STUDENCI_C5
FOR EACH ROW
DECLARE K NUMBER;
BEGIN
IF INSERTING THEN
SELECT COUNT(PRZEDMIOT) INTO K FROM STATYSTYKI_C5
WHERE PRZEDMIOT=:NEW.PRZEDMIOT;
IF K=0 THEN INSERT INTO STATYSTYKI_C5
VALUES(:NEW.PRZEDMIOT, 1, :NEW.OCENA);
ELSE UPDATE STATYSTYKI_C5
SET LICZBA_STUDENTOW=LICZBA_STUDENTOW+1,
SUMA_OCEN=SUMA_OCEN + :NEW.OCENA
WHERE PRZEDMIOT=:NEW.PRZEDMIOT;
END IF;
END IF;
IF UPDATING THEN
SELECT COUNT(PRZEDMIOT) INTO K FROM STATYSTYKI_C5
WHERE PRZEDMIOT =:OLD.PRZEDMIOT;
IF K>0 THEN UPDATE STATYSTYKI_C5
SET LICZBA_STUDENTOW=LICZBA_STUDENTOW-1,
SUMA_OCEN=SUMA_OCEN-:OLD.OCENA
WHERE PRZEDMIOT =:OLD.PRZEDMIOT;
END IF;
SELECT COUNT(PRZEDMIOT) INTO K FROM STATYSTYKI_C5
WHERE PRZEDMIOT = :NEW.PRZEDMIOT;
IF K=0 THEN INSERT INTO STATYSTYKI_C5
VALUES(:NEW.PRZEDMIOT, 1, :NEW.OCENA);
ELSE UPDATE STATYSTYKI_C5
SET LICZBA_STUDENTOW=LICZBA_STUDENTOW+1,
SUMA_OCEN=SUMA_OCEN + :NEW.PRZEDMIOT;
END IF;
END IF;
IF DELETING THEN
SELECT COUNT(PRZEDMIOT) INTO K FROM STATYSTYKI_C5
WHERE PRZEDMIOT =:OLD.PRZEDMIOT;
IF K>0 THEN UPDATE STATYSTYKI_C5
SET LICZBA_STUDENTOW=LICZBA_STUDENTOW-1,
SUMA_OCEN=SUMA_OCEN-:OLD.OCENA
WHERE PRZEDMIOT=:OLD.PRZEDMIOT;
END IF;
END IF;
END;