sql >> Databasteknik >  >> RDS >> Oracle

Skapa utlösare för att infoga i en annan tabell

Du kan inte hämta poster från samma tabell i en radutlösare. Du kan komma åt värden från den faktiska posten med :new och :old (är detta ditt fall?). Utlösaren kunde sedan skrivas om till

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;

Om du behöver fråga en annan post från READING-tabellen måste du använda en kombination av satsutlösare, radutlösare och en PLSQL-samling. Ett bra exempel på detta finns på AskTom.oracle.com



  1. Tabell värderad funktion som dödar min frågeprestanda

  2. Uppdatera/öka upp en kolumn på flera rader samtidigt

  3. Win7 MInGW QT MySQL-programskrik kan inte hitta -lqsqlmysqld; var är det saknade biblioteket?

  4. Laravel:Fel [PDOException]:Kunde inte hitta drivrutinen i PostgreSQL