觸發代碼很好,但是當執行操作時出現此錯誤
錯誤 ORA-04091:表 OR_HR.SELL 正在發生變化,觸發器/函式可能看不到它。
觸發代碼
create or replace TRIGGER "QUALITY_EDIT"
AFTER INSERT OR UPDATE ON Sell
FOR EACH ROW
BEGIN
UPDATE DRUG
SET QUANTITY =
(SELECT (DRUG.QUANTITY - SELL.QUANTITY ) FROM Sell
JOIN Drug
ON SELL.DRUG_ID = DRUG.DRUG_ID) ;
END;
我怎么解決這個問題?
uj5u.com熱心網友回復:
您無法從剛剛更新(或插入)的表中進行選擇,它正在發生變化并且觸發器無法看到它。
幸運的是,您不必從 中進行選擇sell,:new而是使用類似這樣的內容(偽記錄):
create or replace trigger quality_edit
after insert or update on sell
for each row
begin
update drug d set
d.quantity = d.quantity - :new.quantity
where d.drug_id = :new.drug_id;
end;
/
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/333122.html
