insert触发器中能否使用update语句???
createtriggertrg_testb2afterinsertontestbforeachrowdeclaresumnumber;beginsum:=:new.a+...
create trigger trg_testb2
after insert on testb for each row
declare
sum number;
begin
sum := :new.a + :new.b;
update testb
set zje = sum
where a = :new.a and b = :new.b;
end;
执行插入语句时,insert into test values(null, 3 ,4);,为什么出现“
第 1 行出现错误:
ORA-04098: 触发器 'ADMIN.TRG_TESTB' 无效且未通过重新验证
”
这个问题 展开
after insert on testb for each row
declare
sum number;
begin
sum := :new.a + :new.b;
update testb
set zje = sum
where a = :new.a and b = :new.b;
end;
执行插入语句时,insert into test values(null, 3 ,4);,为什么出现“
第 1 行出现错误:
ORA-04098: 触发器 'ADMIN.TRG_TESTB' 无效且未通过重新验证
”
这个问题 展开
2个回答
展开全部
触发器定义错误!
你使用触发器,还为什么用delphi的语句?
:=是delphi 中的赋值 :new 这是参数吗?
你使用触发器,还为什么用delphi的语句?
:=是delphi 中的赋值 :new 这是参数吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是对基本操作,把after改成before
这样就可以了
Create Or Replace Trigger Trg_Testb2
Before Insert On Testb
For Each Row
Begin
:new.zje:=:new.a + :new.b;
End;
这样就可以了
Create Or Replace Trigger Trg_Testb2
Before Insert On Testb
For Each Row
Begin
:new.zje:=:new.a + :new.b;
End;
追问
能给个解释否?
追答
你把这个after改成before触发,UPDATE语句也是可以的
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询