oracle为emp表创建一个触发器,保证修改员工工资时,修改后的工资低于该部门最高工资,同时高于该部门的最低工资
时间: 2023-09-17 18:07:18 浏览: 272
oracle 触发器
以下是创建该触发器的 SQL 语句:
```
CREATE OR REPLACE TRIGGER trg_emp_salary
BEFORE UPDATE OF salary ON emp
FOR EACH ROW
DECLARE
max_salary NUMBER;
min_salary NUMBER;
BEGIN
SELECT MAX(salary) INTO max_salary FROM emp WHERE deptno = :OLD.deptno;
SELECT MIN(salary) INTO min_salary FROM emp WHERE deptno = :OLD.deptno;
IF :NEW.salary > max_salary THEN
RAISE_APPLICATION_ERROR(-20001, '员工工资高于该部门最高工资');
ELSIF :NEW.salary < min_salary THEN
RAISE_APPLICATION_ERROR(-20002, '员工工资低于该部门最低工资');
END IF;
END;
/
```
该触发器在每次更新 `emp` 表的 `salary` 字段时都会被触发。在触发器中,首先查询该员工所在部门的最高工资和最低工资,然后判断新的工资是否符合要求。如果新的工资高于该部门最高工资,则触发错误代码 -20001,如果新的工资低于该部门最低工资,则触发错误代码 -20002。这样就可以保证员工工资在修改后符合要求了。
阅读全文