此Oracle触发器有问题

贝利索·泽维尔(Belitho Xavier)
create or replace NONEDITIONABLE TRIGGER SumUpdate AFTER INSERT ON stavkaotpremnice FOR EACH ROW 
declare pragma autonomous_transaction;
begin
UPDATE otpremnica a
  set a.ukupno= 
    (SELECT SUM(ukupno) 
       FROM stavkaotpremnice
      WHERE brojotpremnice =: new.brojotpremnice)
 WHERE a.brojotpremnice = :new.brojotpremnice;
 commit;
 end;

此触发器是对表stavakaotpremnice中名为“ ukupno”的列的值求和,然后将其存储在另一个表otpremnica中也称为“ ukupno”的列中。触发器检查id(brojotpremnice)是否相同并求和。Brojotpremnice是表otpremnica的外键。有谁知道为什么它完全忽略了第一个条目?如果我在stavkaotpremnica中放入行,我只算第一个条目。

大力水手

可以通过以下增量添加来解决此类问题:

UPDATE otpremnica a
  set a.ukupno = a.ukupno + :new.ukupno
 WHERE a.brojotpremnice = :new.brojotpremnice;

另外,请阅读有关pragma autonomous_transaction为什么使用它?故意的?如果您不知道,请阅读。(它将交易分开)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章