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

createorreplacetriggertrig_del_departmentafterdeleteondeptforeachrowbeginifdeletingth... 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;
end if;
end;
/
总是报触发器无效且未通过重新验证,但是在dos下面的sqlplus中却提示创建成功,能运行,这是为什么,注:pl/sql应该是已经连接上数据库的,因为在里面运行select * from emp是可以的
展开
 我来答
badkano
2015-12-25 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144777 获赞数:885365
团长

向TA提问 私信TA
展开全部

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

触发器的一般语法如下:

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;
mvs2008
2015-04-17 · TA获得超过611个赞
知道小有建树答主
回答量:693
采纳率:50%
帮助的人:395万
展开全部

首先检查下你登录的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;

慢慢的排查错误。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式