Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Erstellen Sie einen Trigger zum Einfügen in eine andere Tabelle

Sie können in einem Zeilentrigger keine Datensätze aus derselben Tabelle abrufen. Sie können mit :new und :old auf Werte aus dem aktuellen Datensatz zugreifen (ist dies Ihr Fall?). Der Trigger könnte dann umgeschrieben werden 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;

Wenn Sie andere Datensätze aus der READING-Tabelle abfragen müssen, müssen Sie eine Kombination aus Anweisungstriggern, Zeilentriggern und einer PLSQL-Sammlung verwenden. Ein gutes Beispiel dafür ist AskTom.oracle.com