Oracle
 sql >> Database >  >> RDS >> Oracle

Crea trigger da inserire in un'altra tabella

Non è possibile recuperare record dalla stessa tabella in un trigger di riga. Puoi accedere ai valori dal record effettivo usando :new e :old (è questo il tuo caso?). Il trigger potrebbe quindi essere riscritto in

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

DECLARE

  varCustID   Varchar(10);

BEGIN 

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

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

END;

Se è necessario interrogare un altro record dalla tabella READING, è necessario utilizzare una combinazione di trigger di istruzioni, trigger di riga e una raccolta PLSQL. Un buon esempio è su AskTom.oracle.com