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

Oracle:Używanie podzapytania w wyzwalaczu

Ten wyzwalacz zrobi to:

CREATE OR REPLACE TRIGGER trigger_w_subquery
AFTER UPDATE OR INSERT ON project_archiving
FOR EACH ROW WHEN (old.archiving_status <> new.archiving_status
  AND new.archiving_status = 1
)
DECLARE
  l_offer projects.offer%TYPE;
BEGIN
  SELECT offer INTO l_offer 
  FROM projects 
  WHERE projnum = :new.projnum;

  IF l_offer IS NULL THEN
    INSERT INTO offer_log (offer, status, date)
    VALUES (null, 9, sysdate);
  END IF;
END;

Założyłem, że wybrane projekty zawsze znajdą wiersz; jeśli nie, zgłosi wyjątek NO_DATA_FOUND, który być może będziesz musiał obsłużyć.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01775:zapętlony łańcuch synonimów, ale nie ma synonimów

  2. Konfiguracja heterogenicznej replikacji baz danych — SQL Server do Oracle

  3. Długi czas pobierania danych z OracleDB za pomocą Eclipselink

  4. Alternatywa LITAGG w Oracle 10g

  5. Hibernate zapisuje nieaktualne dane dzięki hibernate.jdbc.batch_versioned_data