我有一个表EmpSalary
,其中有一列salaryPaid
,该员工的当前薪水和一张表Emp
,其中有baseSalary
列,可用的最低薪水为该员工的工作。我想为EmpSalary
表编写一个触发器来进行一些计算,以确保员工在一定的百分比范围内获得报酬(不超过该员工工作的baseSalary
的70%)。
我已经在纸上进行了计算,但是当我在Emp
表上写入触发器时,我不确定如何引用EmpSalary
表?
CREATE TRIGGER Check_Salary
BEFORE INSERT OR UPDATE ON EmpSalary
FOR EACH ROW
DECLARE
v_salary;
v_baseSalary;
...
BEGIN
v_salary := old.salaryPaid
v_baseSalary := Emp.baseSalary
...
END;
/
任何见解都会很棒!试着去参加一个大考试。
答案 0 :(得分:0)
您可以在触发器中执行SELECT,只要您从中选择数据的表不是定义触发器的表。在这种情况下,您可以从EMP中选择数据:
CREATE OR REPLACE TRIGGER Check_Salary
BEFORE INSERT OR UPDATE ON EmpSalary
FOR EACH ROW
DECLARE
v_salary NUMBER;
v_baseSalary NUMBER;
...
BEGIN
v_salary := old.salaryPaid;
SELECT BASESALARY
INTO v_baseSalary
FROM EMP
WHERE EMP.some_key_column = :old.some_key_column;
...
END;
祝你好运。