【发布时间】:2021-10-07 05:18:19
【问题描述】:
我必须创建一个触发器来限制任何用户更新job_title 是会计的员工的工资。例如:如果有人使用以下命令更新工资:
UPDATE Employees
SET Salary = 11000
WHERE job_id = '101';
然后它首先检查与101的job_id关联的job_title是否是会计。如果是,则抛出一条错误消息,指出您无法更新会计师的薪水。这是我的触发代码,但它无法正常工作。
CREATE OR REPLACE TRIGGER salaryrestruction
BEFORE UPDATE ON employees
DECLARE job_title employees.job_title%type;
BEGIN
IF UPDATING('SALARY') AND JOB_TITLE='accountant'
THEN RAISE_APPLICATION_ERROR
(-20501,'You cannot update SALARY of accountant');
END IF;
END;
这是我的表格数据:
EMPLOYEE_ID FIRST_NAME LAST_NAME EMAIL PHONE_NUMBER HIRE_DATE JOB_TITLE SALARY COMMISSION_PCT
----------- -------------------- ------------------------- ------------------------- -------------------- --------- -------------------- ---------- --------------
102 Randall Zlotkey zlotkey@gmail.com 13675464345 22-MAY-02 Manager 20000
103 John Bernstein bernsteinex@gmail.com 12876454345 23-JUN-03 Accountant 10000 .2
104 Peter Sully sully@gmail.com 13187754345 01-FEB-03 Executive 8000 .4
105 Alberto Hall hall@gmail.com 10000354345 06-APR-05 Human Resources 4500
106 Karen Olsen olsen@gmail.com 13144444345 13-MAY-05 Marketing 10000 .1
107 Peter Christopher christopher@gmail.com 13456754345 13-MAY-06 Administration 12000 .2
101 Lex De Haan lex@gmail.com 13124354345 19-JAN-01 Accountant 9000 .3
【问题讨论】:
-
看起来您应该检查职位
'Accountant',而不是'accountant'。 -
这不是问题。我已经与会计和会计检查过,但它总是更新并且没有显示错误消息。