Utwórz wyzwalacz, aby wstawić do innej tabeli

Mam problem z uruchomieniem wyzwalacza poniżej:

CREATE OR REPLACE TRIGGER AFTERINSERTCREATEBILL
AFTER INSERT
ON READING
FOR EACH ROW 

DECLARE

varReadNo   Int;
varMeterID  Int;
varCustID   Varchar(10);

BEGIN 

SELECT SeqReadNo.CurrVal INTO varReadNo FROM DUAL;

Select MeterID INTO varMeterID
From Reading 
Where ReadNo = varReadNo;

Select CustID INTO varCustID
From Address A
Join Meter M 
on A.postCode = M.postCode
Where M.MeterID = varMeterID;

INSERT INTO BILL VALUES 
(SEQBILLNO.NEXTVAL, SYSDATE, 'UNPAID' , 100 , varCustID , SEQREADNO.CURRVAL); 

END;

Komunikat o błędzie:

* Przyczyna: Wyzwalacz (lub zdefiniowana przez użytkownika funkcja plsql, do której odwołuje się ta instrukcja) próbował spojrzeć na (lub zmodyfikować) tabelę, która była w trakcie modyfikacji przez instrukcję, która ją uruchomiła.

* Akcja: Przepisz wyzwalacz (lub funkcję), aby nie czytał tej tabeli.

Czy to znaczy, że nie mam zamiaru pobierać żadnych szczegółów z tabeli Reading?

Uważam, że problem pojawia się podczas pobierania danych z odczytu tabeli podczas wstawiania wartości:

SELECT SeqReadNo.CurrVal INTO varReadNo FROM DUAL;

Select MeterID INTO varMeterID
From Reading 
Where ReadNo = varReadNo; 

W każdym razie, aby to rozwiązać? Czy istnieje lepsza metoda, aby to zrobić? Muszę wstawić nowy wiersz do tabeli BILL po wejściu do tabeli Odczyt, gdzie ReadNo nie musi odwoływać się do ReadNo, po prostu wstawiam.

questionAnswers(4)

yourAnswerToTheQuestion