Also ich hab mich an den vom letzten Jahr gehalten natürlich statt insert ein update. Problem tritt bei den Test-updates auf
Code
- SET SERVEROUTPUT ON
- show errors trigger t_update_Trainer;
- CREATE OR REPLACE TRIGGER t_update_Trainer
- INSTEAD OF UPDATE ON trainer_view
- FOR EACH ROW
- DECLARE
- pk_aenderung_nicht_erlaubt EXCEPTION;
- BEGIN
- IF(:new.persnr != :old.persnr)THEN
- RAISE pk_aenderung_nicht_erlaubt;
- ELSE
- UPDATE personen
- SET persnr=:new.persnr, vname=:new.vname, pname=:new.nname, geschlecht=:new.geschlecht, gebdat=:new.gebdat
- WHERE persnr = :new.persnr;
- UPDATE trainer
- SET gehalt=:new.gehalt, von=:new.von, bis=:new.bis
- WHERE persnr = :new.persnr;
- END IF;
- EXCEPTION
- WHEN pk_aenderung_nicht_erlaubt THEN
- DBMS_OUTPUT.PUT_LINE('Aenderung des Schluessels nicht erlaubt');
- END;
- /
- /*Test:*/
- SELECT * FROM trainer_view t ORDER BY t.persnr;
- UPDATE Trainer_View SET gehalt=10000 where persnr=10080;
- UPDATE Trainer_View SET persnr=10081 where persnr=10080;
- SELECT * FROM trainer_view t ORDER BY t.persnr;
- ROLLBACK;
Danke für Hilfe