Nejprve se musíte rozhodnout:
- buď chcete, aby se vložení nebo aktualizace nezdařily, když se provádí v nežádoucím čase
- nebo chcete, aby byly vložení nebo aktualizace zpracovány, ale se sloupci nastavenými na hodnotu null.
Nemůžete mít obojí.
V případě, že chcete nastavit sloupce na NULL, mělo by to být BEFORE INSERT/UPDATE spoušť, takže změněné sloupce se zapíší do tabulky. (Ve spouštěči AFTER INSERT/UPDATE by nastavení polí na nějakou hodnotu nemělo žádný účinek, protože nejsou zapsána.)
Poté SET NEW.STAFFNO = NULL;
není platný PL/SQL, to by muselo být :NEW.STAFFNO := NULL;
místo toho.
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;