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是可以的 展开
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是可以的 展开
2个回答
展开全部
一般情况就是触发器的语法不正确。
触发器的一般语法如下:
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;
展开全部
首先检查下你登录的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;
慢慢的排查错误。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询