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

Tworzenie wyzwalacza działającego na dwóch stołach

To zadziałało idealnie.

CREATE OR REPLACE TRIGGER checkDuration
  BEFORE INSERT OR UPDATE on offering
  FOR EACH ROW
DECLARE
  isFound NUMBER;
BEGIN
  SELECT 1 INTO isFound FROM DUAL WHERE EXISTS (
    SELECT * FROM Course c
    WHERE c.courseId = :new.courseId AND c.duration = 5);
  IF EXTRACT(MONTH FROM :new.startDate) = 12 
    THEN RAISE_APPLICATION_ERROR(-20001, 'Courses of five days duration cannot be run in December');
  END IF;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    NULL;
END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Słowa kluczowe IS vs AS do tworzenia funkcji lub procedur Oracle PL/SQL

  2. najlepszy sposób na śledzenie zmian danych w Oracle

  3. Oracle Live SQL

  4. Jak zapamiętać, w którą stronę powinien iść PRIOR w zapytaniach CONNECT BY?

  5. Jak uruchomić konkretny skrypt po połączeniu się z Oracle za pomocą szyn?