更新トリガーを作成しようとしていますが、「変化するテーブル」エラーが発生し続けます。主なアイデアは、ユーザー評価の販売と購入のデータベースです。基本的に、PRODUTOS テーブルの評価が更新されるたびに、売り手の評価を再計算したいと考えています。次のトリガー(およびそのバージョン)を試していますが、どこにも行きません..
CREATE OR REPLACE TRIGGER actualiza_rating_vend
AFTER UPDATE OF RATING_VENDEDOR
ON PRODUTOS
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
CURSOR prod IS
SELECT ID_USER,RATING_VENDEDOR, ID_COMPRADOR, RATING_COMPRADOR
FROM PRODUTOS
WHERE PRODUTOS.ID_USER = :NEW.ID_USER
OR PRODUTOS.ID_COMPRADOR = :NEW.ID_USER;
contador NUMBER;
soma NUMBER;
res NUMBER;
linha prod%ROWTYPE;
username varchar2(255);
BEGIN
res := 0;
contador := 0;
fetch prod into linha;
username := :NEW.ID_USER;
while prod%found loop
if(linha.ID_user = username)
then
soma := soma + linha.RATING_VENDEDOR;
else
soma := soma + linha.RATING_COMPRADOR;
end if;
contador := contador + 1;
fetch prod into linha;
end loop;
close prod;
res := soma / contador;
update USERS set USERS.RATING = res where USERS.ID_USER = username;
end;
ID_USER 値が更新されたエントリの ID_USER と等しいエントリのみを選択するにはどうすればよいですか?.. よろしくお願いします!