Wyzwalacz

0

Witam. Mam za zadanie zdefiniować trigger rejestrujący zmiany ocen w tabeli oceny uwzględniając datę zmiany SYSDATE oraz nazwę użytkownika USER. Zmiany powinny być zapisane w tabeli oceny_log .

Ok utworzyłem te dwie tabelki z atrybutami:
oceny -> id_ucznia number, ocena number
oceny_log -> numer_zmiany number, data_zmiany date, id_ucznia number, stara_ocena number, nowa_ocena number.

Dodałem również sekwencję.
Trigger zdefiniowałem następująco:

create or replace trigger zmiana_ocen
before insert or update or delete on oceny
for each row
begin
insert into oceny_log values (seq_zmiana_oceny.nextval,sysdate,id_ucznia,
:old.stara_ocena,:new.nowa_ocena);
end;

Niestety nie działa. Nie wiem jak te tabele ze sobą związać, aby przy dodawaniu, aktualizowaniu czy usuwaniu wierszy w tabeli oceny te zmiany zostały zarejestrowane w tabeli oceny_log.
Proszę o pomoc i życzę miłego dnia.

0

nie wiem jak jest w ORACLU, ale nie podoba mi się że używasz new.nowa_ocena w triggerze podpiętym pod zdarzenie delete, to może rzucić wyjątkiem

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