sql >> Base de Datos >  >> RDS >> Oracle

Crear disparador para insertar en otra tabla

No puede recuperar registros de la misma tabla en un activador de fila. Puede acceder a los valores del registro actual usando :nuevo y :antiguo (¿es este su caso?). El activador podría reescribirse a

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 necesita consultar otro registro de la tabla READING, debe usar una combinación de activadores de declaraciones, activadores de fila y una colección PLSQL. Un buen ejemplo de esto está en AskTom.oracle.com