Oracle
 sql >> Base de données >  >> RDS >> Oracle

Créer un déclencheur à insérer dans une autre table

Vous ne pouvez pas récupérer des enregistrements de la même table dans un déclencheur de ligne. Vous pouvez accéder aux valeurs de l'enregistrement réel en utilisant :new et :old (est-ce votre cas ?). Le déclencheur pourrait alors être réécrit dans

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;

Si vous devez interroger un autre enregistrement de la table READING, vous devez utiliser une combinaison de déclencheurs d'instruction, de déclencheur de ligne et d'une collection PLSQL. Un bon exemple de ceci est sur AskTom.oracle.com