BEGIN IF TO_CHAR(SYSDATE, 'DY') IN ('SAT', 'SUN') OR TO_CHAR(SYSDATE, 'HH24:MI') NOT BETWEEN '08:00' AND '18:00' THEN RAISE_APPLICATION_ERROR(-20400, 'You can not dml on weekends or office off times'); END IF; END secure_emp; /
INSERT INTO EMP(EMPLOYEE_ID,LAST_NAME, EMAIL, HIRE_DATE, JOB_ID)
VALUES (301, 'oMAR', 'MDFD', sysdate, 'DDD');
select * from emp where employee_id > 300;
DROP TRIGGER secure_emp;
----------------------
CREATE OR REPLACE TRIGGER secure_emp
BEFORE INSERT OR UPDATE OR DELETE ON EMP BEGIN IF TO_CHAR(SYSDATE, 'DY') IN ('SAT', 'SUN') OR TO_CHAR(SYSDATE, 'HH24:MI') NOT BETWEEN '08:00' AND '18:00' THEN IF INSERTING THEN RAISE_APPLICATION_ERROR(-20400, 'You can not INSERT on weekends or office off times'); ELSIF DELETING THEN RAISE_APPLICATION_ERROR(-20401, 'You can not DELETE on weekends or office off times'); ELSIF UPDATING ('SALARY') THEN RAISE_APPLICATION_ERROR(-20402, 'You can not UPDATE on weekends or office off times'); ELSE RAISE_APPLICATION_ERROR(-20403, 'You may UPDATE on weekdays or normal office times'); END IF; END IF; END secure_emp; /
INSERT INTO EMP(EMPLOYEE_ID,LAST_NAME, EMAIL, HIRE_DATE, JOB_ID)
VALUES (301, 'oMAR', 'MDFD', sysdate, 'DDD');
select * from emp where employee_id > 300;
DROP TRIGGER secure_emp;
-----------------------
CREATE OR REPLACE TRIGGER restrict_sal
BEFORE INSERT OR UPDATE ON EMP FOR EACH ROW BEGIN IF NOT :NEW.job_id IN ('AD_PRESS', 'AD_VP') AND :NEW.salary > 15000 THEN RAISE_APPLICATION_ERROR(-20404, 'Employee can not earn more than 15000'); END IF; END restrict_sal; /
INSERT INTO EMP(EMPLOYEE_ID,LAST_NAME, EMAIL, HIRE_DATE, JOB_ID)
VALUES (301, 'oMAR', 'MDFD', sysdate, 'DDD');
INSERT INTO EMP(EMPLOYEE_ID,LAST_NAME, EMAIL, HIRE_DATE, JOB_ID, SALARY)
AFTER INSERT OR UPDATE OR DELETE ON EMP FOR EACH ROW BEGIN INSERT INTO audit_emp (user_name, time_stamp, id, old_last_name, new_last_name, old_title, new_title, old_salary, new_salary) VALUES (USER, SYSDATE, :OLD.EMPLOYEE_ID, :OLD.LAST_NAME, :NEW.LAST_NAME, :OLD.JOB_ID, :NEW.JOB_ID , :OLD.SALARY, :NEW.SALARY); END audit; /