首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

一个银行触发器Oracle解决思路

2012-01-19 
一个银行触发器Oracle我写了一个简单的触发器,在编译的时候没有错.但是在执行的时候出现了错误.哪位高手可

一个银行触发器Oracle
我写了一个简单的触发器,在编译的时候没有错.但是在执行的时候出现了错误.
哪位高手可以帮帮我呀?
set   serveroutput   on;
create   or   replace   trigger   over1_trigger
after   update   on   account
for   each   row   when   (new.balance <0)
begin
insert   into   loan(loan_number,branch_name,amount)   values
(:new.account_number,:new.branch_name,-:new.balance);
update   account   set   balance=0   where   account_number=:new.balance;
end   over1_trigger;
/


出现的错误是:
表   BANK.ACCOUNT   发生了变化,触发器/函数不能读
在 "BANK.OVER1_TRIGGER ",   line   4
触发器   'BANK.OVER1_TRIGGER '   执行过程中出错


谢谢!!

[解决办法]
trigger不能操作本表。用自治事务就可以。
[解决办法]
这个是基于自身表的trigger的变异表问题
metalink上解释如下:

对于after 类型的 for each row 级别的triggers,都不允许在 trigger 中访问本trigger所依赖的table,

热点排行