在编写触发器时如何引用另一个表中的另一列?

时间:2016-10-15 19:06:31

标签: oracle triggers

我有一个表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; /

任何见解都会很棒!试着去参加一个大考试。

1 个答案:

答案 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;

祝你好运。