琢磨了几天没有琢磨出来,请CSDN上的朋友们帮忙了
table:file1
columns:amount
         a
         b
         c
我想是a、b、c中任一个栏位数值有变动,或者table记录有新增,会自动计算这三个字段的和到amount中。create or replace trigger file1_amount
after insert or update on erp.file1
for each row
begin
update erp.file1 set amount = nvl(:new.a,0) + nvl(:new.b,0) + nvl(:new.c,0);
end;原先这样的写法有错误。
请大家帮忙了,谢谢!

解决方案 »

  1.   

    看不懂你的意思, 你是想把 abc加在一起放在amount里面吗?
    可是你是多记录的,难道每一行都放一个?
      

  2.   

    如果这样,建议这个amount 不应该放在表中,而是应该由查询或视图来实现。这个字段属于冗余字段
      

  3.   

    撇开实现来说,你这种设计的性能问题很严重。每次更新一个一行数据就会引起整个表的更新。
    当数据越来越多时,锁表、大批更新将给你带来很大的麻烦。还有,你这个不能通过trigger实现,或者你可以通过procedure实现。