oracle为emp表创建一个触发器,保证修改员工工资时,修改后的工资低于该部门最高工资,同时高于该部门的最低工资
时间: 2023-09-17 18:07:18 浏览: 161
你可以使用以下代码创建一个触发器,保证修改员工工资时,修改后的工资低于该部门最高工资,同时高于该部门的最低工资:
```
CREATE OR REPLACE TRIGGER emp_salary_trg
BEFORE UPDATE OF salary ON emp
FOR EACH ROW
DECLARE
max_salary emp.salary%TYPE;
min_salary emp.salary%TYPE;
BEGIN
SELECT MAX(salary) INTO max_salary FROM emp WHERE deptno = :NEW.deptno;
SELECT MIN(salary) INTO min_salary FROM emp WHERE deptno = :NEW.deptno;
IF :NEW.salary > max_salary THEN
RAISE_APPLICATION_ERROR(-20001, 'Salary cannot be higher than department max salary');
END IF;
IF :NEW.salary < min_salary THEN
RAISE_APPLICATION_ERROR(-20002, 'Salary cannot be lower than department min salary');
END IF;
END;
/
```
这个触发器会在每次更新emp表的salary列时执行。它首先查询该员工所在部门的最高工资和最低工资,然后检查修改后的工资是否符合条件。如果工资不符合条件,则触发器会抛出一个错误,阻止修改操作。
阅读全文