oracle中,用pl⼀sql创建触发器报触发器无效且未通过重新验证

2025-02-22 16:09:27
推荐回答(2个)
回答1:

一般情况就是触发器的语法不正确。

触发器的一般语法如下:

CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER }
{INSERT | DELETE | UPDATE [OF column [, column …]]}
[OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...]
ON [schema.]table_name | [schema.]view_name 
[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]
[FOR EACH ROW ]
[WHEN condition]
PL/SQL_BLOCK | CALL procedure_name;

回答2:

首先检查下你登录的user和数据库是否一样。如果是一样的话,再检验该用户对dept的操作权限。最后你试着注释一些代码在运行看看,例如下面的代码:

create or replace trigger trig_del_department
after delete on dept
for each row
  begin
    if deleting then
      --delete from emp where deptno=:old.deptno;
      null;
    end if;
  end;

慢慢的排查错误。