我試圖創建更新觸發器,但我一直在「變異表」錯誤上碰撞。主要想法是銷售&購買數據庫與用戶評級。 基本上我想,每次PRODUTOS表上的評分都會更新,重新計算賣家的評分。 我想下面的觸發器(和它的版本),但它沒有成氣候..在更新觸發器獲取更新條目的ID - 突變表錯誤
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更新的條目?.. 在此先感謝!
您在文說說'DEALS'表你題。但是你的觸發器沒有引用該表。我假設觸發器是正確的,並且問題的文本是錯誤的,但如果您能澄清這一點,這將有所幫助。 –
另外,RATING_VENDEDOR表上的'UPDATE'是來自'PRODUTOS'還是'USERS'上的另一個觸發器(或另一個觸發器調用的代碼)上的'UPDATE'? –
@JustinCave抱歉,我寫了Deals,因爲'produtos'是一個葡萄牙語單詞,它可能很奇怪(但我做得更糟,哈哈)我編輯了正確的表名。不,更新RATING_VENDEDOR不是來自另一個觸發器,它是一個直接的sql更新命令..again,對不起 –