sql >> Databáze >  >> RDS >> Oracle

Vytvořte spouštěč pro vložení do jiné tabulky

Nemůžete načíst záznamy ze stejné tabulky ve spouštěči řádku. K hodnotám ze skutečného záznamu můžete přistupovat pomocí :new a :old (je to váš případ?). Spouštěč by pak mohl být přepsán na

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;

Pokud potřebujete dotaz na jiný záznam z tabulky READING, musíte použít kombinaci spouštěčů příkazů, spouštěče řádků a kolekce PLSQL. Dobrý příklad toho je na AskTom.oracle.com



  1. Aktualizace nahradit středník v SQL dostane chybu syntaxe

  2. Vložit do více tabulek v jednom dotazu

  3. SQL Vytváření závislostí tabulek

  4. mysqli_real_escape_string nefunguje správně