sql >> Database >  >> RDS >> Oracle

Maak een trigger om in een andere tabel in te voegen

U kunt geen records ophalen uit dezelfde tabel in een rijtrigger. U hebt toegang tot waarden uit de werkelijke record met :new en :old (is dit uw geval?). De trigger kan dan worden herschreven naar

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;

Als u een query moet uitvoeren op een ander record uit de READING-tabel, moet u een combinatie van instructietriggers, rijtriggers en een PLSQL-verzameling gebruiken. Een goed voorbeeld hiervan is op AskTom.oracle.com



  1. MySQL:NIET LIKE

  2. Vind het kleinste ongebruikte nummer in SQL Server

  3. Is de automatische update van Sphinx index wanneer u gegevens aan uw SQL toevoegt?

  4. De servertijdzonewaarde 'AEST' wordt niet herkend of vertegenwoordigt meer dan één tijdzone