首页 > 解决方案 > 使用触发器删除特定行(员工)后,如何编写 PL/SQL 程序来获取行数(员工人数)?

问题描述

我已经写了这个块,我很确定这里缺少一些东西:

CREATE OR REPLACE TRIGGER
AFTER DELETE
ON Employees
FOR EACH ROW
BEGIN
SELECT COUNT(*) FROM Employees;
END;

谁能帮帮我!!

SQL> CREATE OR REPLACE TRIGGER Trg_Emp_AD AFTER DELETE ON Employees
  2    v_count INT;
  3  BEGIN
  4    SELECT COUNT(*) INTO v_count FROM Employees;
  5    DBMS_OUTPUT.PUT_LINE( 'There are '||v_count||' lines in the table' );
  6  END;
  7  /
  v_count INT;
  *
ERROR at line 2:
ORA-04079: invalid trigger specification

标签: oracleplsqltriggers

解决方案


如果需要显示计数结果,则将当前触发器主体转换为以下类型的语句级别,而不是通过首先删除的行级FOR EACH ROW触发器,例如

SQL> SET SERVEROUTPUT ON
SQL> CREATE OR REPLACE TRIGGER Trg_Emp_AD AFTER DELETE ON Employees
  v_count INT;
BEGIN
  SELECT COUNT(*) INTO v_count FROM Employees;
  DBMS_OUTPUT.PUT_LINE( 'There are '||v_count||' lines in the table' );
END;
/

推荐阅读