sql >> Database teknologi >  >> RDS >> Oracle

Opret trigger for at indsætte i en anden tabel

Du kan ikke hente poster fra den samme tabel i en rækkeudløser. Du kan få adgang til værdier fra den faktiske post ved at bruge :ny og :gammel (er dette din sag?). Udløseren kunne derefter omskrives til

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;

Hvis du har brug for at forespørge på en anden post fra READING-tabellen, skal du bruge en kombination af sætningstriggere, rækketrigger og en PLSQL-samling. Et godt eksempel på dette er på AskTom.oracle.com



  1. mysql forespørgsel vælg gerne med diakritiske tyrkiske bogstaver

  2. konverter min sql-forespørgsel til queryexpression eller fetchxml i crm

  3. COUNT (DISTINCT column_name) Uoverensstemmelse vs. COUNT (column_name) i SQL Server 2008?

  4. Oracle-datokorruption under opdatering