0

Payment新しいレコードがテーブルに挿入されたときに (請求用に) テーブルを更新するトリガーを作成しましたEnrollment。私のトリガーは次のとおりです。

CREATE OR REPLACE TRIGGER EnrollFee_trig
AFTER INSERT ON Enrollment
FOR EACH ROW

DECLARE
amount Payment.TotalPrice%TYPE;
id Payment.LearnerID%TYPE;

BEGIN
SELECT SUM(Price) into amount
FROM LearnerEnrollCourse_View
WHERE LearnerID = :NEW.LearnerID
AND Paid = 'N';

SELECT LearnerID into id
FROM Payment
WHERE LearnerID = :NEW.LearnerID
AND PaymentDate IS NULL;

IF SQL%FOUND THEN
UPDATE Payment 
SET TotalPrice = amount 
WHERE LearnerID = :new.LearnerID
    AND PaymentDate IS NULL;
ELSE  
INSERT INTO Payment VALUES
     (PaymentID_Seq.nextval, :new.LearnerID, '', amount);  
END IF;

END;
/

トリガーは正常に作成できます。しかし、新しいレコードをEnrollmentテーブルに挿入すると、「テーブルENROLLMENTが変更されています。トリガー/関数がそれを認識しない可能性があります」というエラーが発生します。これを引き起こしている問題と、それを解決する方法をより具体的に知りたいです。

4

1 に答える 1