触发器应用 trigger

首先有一张表:

create table T_SALARY
(
  name   VARCHAR2(20),
  age    NUMBER(2),
  salary NUMBER(5)
);

insert into t_salary (NAME, AGE, SALARY)
values ('wyl', 23, 63000);

insert into t_salary (NAME, AGE, SALARY)
values ('werxiao', 43, 6012);

insert into t_salary (NAME, AGE, SALARY)
values ('lisi', 54, 7000);

insert into t_salary (NAME, AGE, SALARY)
values ('zhangsan', 42, 4521);

触发器应用场景1:复杂的安全性检查,如下

  

CREATE OR REPLACE TRIGGER t_security_t_salary
BEFORE UPDATE
ON t_salary
/*
   触发器应用场景1:复杂的安全检查
   禁止在非工作时间操作表
   周末或者不在9点到18点之间,为非工作时间
*/
BEGIN
  IF(to_char(SYSDATE,'day')IN('星期六','星期日')) OR
  to_number(to_char(sysdate,'hh24')) NOT BETWEEN 9 AND 18 THEN
  --to_number(to_char(sysdate,'hh24')) BETWEEN 9 AND 18 THEN
  --禁止insert 新员工
  raise_application_error('-20002','非工作时间不允许操作这张表');
  END IF;
END;

  其中 raise_application_error()的第一个参数为 -20999到-20000之间。效果图如下:

触发器应用 trigger_第1张图片

你可能感兴趣的:(trigger)