Crear disparador para insertar en otra tabla

Tengo algunos problemas para ejecutar el disparador a continuación:

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;

Mensaje de error:

* Causa: un activador (o una función de plsql definida por el usuario a la que se hace referencia en esta declaración) intentó observar (o modificar) una tabla que estaba en medio de ser modificada por la declaración que la activó.

* Acción: Reescriba el disparador (o función) para que no lea esa tabla.

¿Significa que no debo recuperar ningún detalle de la lectura de la tabla?

Creo que el problema ocurre cuando recupero datos de la Lectura de la tabla mientras se está insertando el valor:

SELECT SeqReadNo.CurrVal INTO varReadNo FROM DUAL;

Select MeterID INTO varMeterID
From Reading 
Where ReadNo = varReadNo; 

¿Está ahí de todos modos para resolver esto? ¿O hay un método mejor para hacer esto? Necesito insertar una nueva fila en la tabla BILL después de ingresar a la tabla Lectura, donde ReadNo necesita hacer referencia al ReadNo que acabo de insertar.

Respuestas a la pregunta(4)

Su respuesta a la pregunta