Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Utwórz wyzwalacz, aby wstawić do innej tabeli

Nie można pobrać rekordów z tej samej tabeli w wyzwalaczu wierszowym. Możesz uzyskać dostęp do wartości z aktualnego rekordu używając :new i :old (czy to twój przypadek?). Wyzwalacz można następnie przepisać do

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;

Jeśli chcesz odpytywać inny rekord z tabeli READING, musisz użyć kombinacji wyzwalaczy instrukcji, wyzwalacza wierszowego i kolekcji PLSQL. Dobrym tego przykładem jest AskTom.oracle.com



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Deklarowanie zmiennej tymczasowej w bazie danych Oracle

  2. Jak uniknąć tego bardzo ciężkiego zapytania, które spowalnia aplikację?

  3. Różnica w liczbie wierszy w dwóch tabelach

  4. Oracle INSERT do dwóch tabel w jednym zapytaniu

  5. ORA-00942:tabela lub widok nie istnieje z szablonem Spring JDBC w Spring Boot