Oracle编写一个触发器,当修改emp表中的工资时,保证“10”号部门不超过50000元,其他部门不超过70000元。
时间: 2024-06-13 10:09:53 浏览: 129
以下是Oracle编写一个触发器,当修改emp表中的工资时,保证“10”号部门不超过50000元,其他部门不超过70000元的代码:
```sql
CREATE OR REPLACE TRIGGER check_sal
BEFORE UPDATE OF sal ON emp
FOR EACH ROW
DECLARE
v_deptno emp.deptno%TYPE;
v_max_sal NUMBER(8,2);
BEGIN
SELECT deptno, CASE deptno WHEN 10 THEN 50000 ELSE 70000 END INTO v_deptno, v_max_sal FROM dual;
IF :new.sal > v_max_sal AND :new.deptno = v_deptno THEN
RAISE_APPLICATION_ERROR(-20001, '该部门工资不能超过'||v_max_sal||'元');
END IF;
END;
```
触发器的作用是在更新emp表中的sal字段时,检查该职工所在部门的工资是否超过了规定的上限。如果超过了,则会抛出一个自定义的应用程序错误。
阅读全文