TRIGGER nie działa wyzwalacz

Odpowiedz Nowy wątek
2013-05-31 20:27
wera
0

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;

Pozostało 580 znaków

2013-05-31 21:02
0

Sformatuj, co nie działa, czy się nie kompiluje, nikt nie będzie zgadywał.

Pozostało 580 znaków

2013-05-31 21:12
wera
0

Stworzone sa dwie tabele statystyki i studenci. W tab statystyki: liczba studentów, suma_ocen, przedmiot. W tabeli studenci: id, imie, nazwisko, przedmiot. W jednej i drugiej tabeli przedmiot jest typu o_przedmiot. Dla o_przedmiot jest utworzony typ jako obiekt (nazwa i ocena). Wyzwalacz ma aktualizować tab statystyki po dodaniu, zmianie lub usunięciu na tab studenci. Błędy w wyzwalaczu:
Error(7,27): PLS-00049: niepoprawna zmienna wiązania 'NEW.OCENA'
Error(10,23): PLS-00049: niepoprawna zmienna wiązania 'NEW.OCENA'
Error(19,21): PLS-00049: niepoprawna zmienna wiązania 'OLD.OCENA'
Error(25,27): PLS-00049: niepoprawna zmienna wiązania 'NEW.OCENA'
Error(36,21): PLS-00049: niepoprawna zmienna wiązania 'OLD.OCENA'

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0