Allereerst moet je beslissen:
- ofwel je wilt dat het invoegen of bijwerken mislukt wanneer het op een ongewenst tijdstip wordt gedaan
- of je wilt dat de invoeging of update wordt verwerkt, maar dan met de kolommen op null.
Je kunt niet beide hebben.
Als u de kolommen op NULL wilt zetten, moet dit een BEFORE . zijn INSERT/UPDATE-trigger, zodat de gewijzigde kolommen naar de tabel worden geschreven. (In een AFTER INSERT/UPDATE-trigger zou het instellen van de velden op een bepaalde waarde geen enkel effect hebben, omdat ze niet zijn geschreven.)
Dan SET NEW.STAFFNO = NULL;
is geen geldige PL/SQL, dat zou :NEW.STAFFNO := NULL;
moeten zijn in plaats daarvan.
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;