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

Wstawianie/aktualizacja wyzwalacza Oracle

Sugeruję określenie wyzwalacza dla każdego wiersza. Uważam to za dużo łatwiejsze.

Możesz policzyć, aby sprawdzić, czy MovieStar.Name wartość już istnieje, a następnie wstaw, jeśli nie; to jest podobne do podejścia, które masz powyżej. To się nie powiedzie, jeśli inny użytkownik wstawi movie star między momentem sprawdzenia a godziną wstawienia, ale prawdopodobnie wystarczy to do zadania klasowego. Istnieją akceptowane podejścia bezbłędne, ale być może nie omówiłeś ich jeszcze na zajęciach.

Spróbuj czegoś takiego; prawdopodobnie zawiera wszystko, co do tej pory omówiłeś na zajęciach:

CREATE OR REPLACE TRIGGER TestTrig
AFTER UPDATE OR INSERT ON STARSIN
FOR EACH ROW
DECLARE
  movieStarCount NUMBER;
BEGIN
  SELECT COUNT(*) INTO movieStarCount
    FROM MovieStar
    WHERE Name = :NEW.StarName;
  IF movieStarCount = 0 THEN
    INSERT INTO MovieStar (Name) VALUES (:NEW.StarName);
  END IF;
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. Porównaj ciąg w przypadku Oracle, gdy

  2. Operator ALL VS Any na pustym zapytaniu

  3. Jak szeroko stosowane są obiekty Oracle?

  4. skrypt, który pobiera dane z pliku txt w klauzuli where

  5. Łączenie tabel w Oracle SQL Developer