create or replace trigger admin.patreg_paid_amt_temp
before UPDATE OF PAIDAMOUNT_TEMP ON admin.patient_registration
REFERENCING OLD AS OLD NEW AS NEW
For EACH ROW
BEGIN
if :new.PAIDAMOUNT_TEMP != :old.PAIDAMOUNT_TEMP
then
UPDATE admin.patient_registration d
set d.PAID_AMOUNT = :new.PAIDAMOUNT_TEMP + d.DIFFERENCE ,
d.PENDING = ABS(:new.PAIDAMOUNT_TEMP - d.DUES)
where d.PATIENT_ID = :new.PATIENT_ID;
end if;
END;
トリガーが読み取り元のテーブルの内容を変更できないことが原因であることがわかっています。
誰かがこれを達成するのを手伝ってくれませんか
このクエリを書くと、次のエラーが発生します
update admin.patient_registration set paidamount_temp= 1000 where patient_id=11;
要求された操作の実行中にエラーが発生しました
ORA-04091 :
table Admin.PATIENT_REGISTRATIONが変化しているため、トリガー/関数に表示されない場合が
あります。テーブル%s。%sが変化しています、トリガー/関数がそれを認識しない可能性があります "