Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Criar gatilho para inserir em outra tabela


Você não pode recuperar registros da mesma tabela em um gatilho de linha. Você pode acessar os valores do registro real usando :new e :old (este é o seu caso?). O gatilho poderia então ser reescrito para
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 você precisar consultar outro registro da tabela READING, precisará usar uma combinação de gatilhos de instrução, gatilho de linha e uma coleção PLSQL. Um bom exemplo disso está em AskTom.oracle.com