Първо трябва да решите:
- или искате вмъкването или актуализацията да се провали, когато се извършва в нежелан момент
- или искате вмъкването или актуализацията да бъдат обработени, но с колони, зададени на null тогава.
Не можете да имате и двете.
В случай, че искате да зададете колоните на NULL, това трябва да е ПРЕДИ Задейства INSERT/UPDATE, така че променените колони се записват в таблицата. (В тригер AFTER INSERT/UPDATE настройката на полетата на някаква стойност няма да има никакъв ефект, тъй като те не са написани.)
След това SET NEW.STAFFNO = NULL;
не е валиден PL/SQL, това трябва да е :NEW.STAFFNO := NULL;
вместо това.
CREATE OR REPLACE TRIGGER hi
BEFORE INSERT OR UPDATE OF class_time ON class
FOR EACH ROW
WHEN (new.class_time NOT BETWEEN '09:00' AND '18:00')
BEGIN
:new.staffno := null;
:new.class_day := null;
:new.class_type := null;
:new.roomnum := null;
END;