Oracle 删除前触发器不会触发

Oracle 删除前触发器不会触发,oracle,plsql,oracle12c,Oracle,Plsql,Oracle12c,以下触发器已正确创建,并在UPDATE和INSERT语句之前触发。但发出DELETE stmt时,它不会显示任何内容。请帮我确定这里的问题 create or replace trigger tr_emp_saldiff BEFORE INSERT OR UPDATE OR DELETE ON emp REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW WHEN (new.emp_no > 0) declare sal_diff numbe

以下触发器已正确创建,并在UPDATE和INSERT语句之前触发。但发出DELETE stmt时,它不会显示任何内容。请帮我确定这里的问题

create or replace trigger tr_emp_saldiff
BEFORE INSERT OR UPDATE OR DELETE
ON emp
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
WHEN (new.emp_no > 0)
declare
    sal_diff number;
begin
    sal_diff  := :new.salary  - :old.salary;
    dbms_output.put(' Old salary: ' || :old.salary);
    dbms_output.put('  New salary: ' || :new.salary);
    dbms_output.put_line('  Difference ' || sal_diff);
END;
/

UPDATE emp set salary = salary + 500 where dept_no = 10;
Output :
1 row(s) updated.
Old salary: 20500 New salary: 21000 Difference 500

INSERT INTO EMP VALUES(1000,'Alice',15000,'Fiona',30);
Output :
1 row(s) inserted.
Old salary: New salary: 20000 Difference 

DELETE FROM emp where emp_name='Jane';
Output :
1 row(s) deleted.
delete语句后不显示任何值

对于
DELETE
new,这不可能是真的。emp_no
则为空


删除该条件或在
DELETE
上使用单独的触发器。(正如所给出的那样,它只对
更新
有意义。在
插入
删除
时工资没有变化)

是的,当条件不适用于
删除
stmt。非常感谢您的投入!我知道触发器仅适用于
UPDATE
语句。但由于我是初学者,我只是测试它是否为
INSERT
DELETE
语句提供了正确的新旧值。
WHEN (new.emp_no > 0)