This note provides an example on a trigger. I like this example as it shows how additional business logic can be implemented.
It is an example of a statement trigger: whenever a statement is issued, the trigger fires once, no matter how many records are affected.
CREATE OR REPLACE TRIGGER security_time_check
BEFORE DELETE OR UPDATE ON emp
DECLARE
dy_of_week CHAR(3);
hh_of_day NUMBER(2);
BEGIN
dy_of_week := TO_CHAR(SYSDATE,'DY');
hh_of_day := TO_CHAR(SYSDATE,'HH24');
IF dy_of_week IN ('WO')
OR hh_of_day NOT BETWEEN 8 AND 17 THEN
RAISE_APPLICATION_ERROR(-20600, 'Transaction rejected for security reasons');
END IF;
END;
/