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

Vložení/aktualizace Oracle Trigger

Navrhoval bych specifikovat spouštěcí palbu pro každý řádek. Zdá se mi to mnohem jednodušší.

Můžete spočítat, zda MovieStar.Name hodnota již existuje a pokud neexistuje, vložte ji; to je podobné přístupu, který máte výše. To se nezdaří, pokud jiný uživatel vloží filmovou hvězdu mezi čas, který zkontrolujete, a čas, který vložíte, ale pravděpodobně je to dost dobré pro zadání třídy. Existují akceptované přístupy bez selhání, ale možná jste je ještě neprobrali ve třídě.

Zkuste něco takového; pravděpodobně zahrnuje vše, co jste ve třídě doposud probrali:

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. Kontrola verzí PostgreSQL s Atlassian Bitbucket

  2. Přidání zalomení řádku do textu MySQL INSERT INTO

  3. Postgres selhává s 'nelze otevřít soubor mapování vztahů global/pg_filenode.map'

  4. Chybová zpráva – ORA-25155:sloupec použitý v NATURAL spojení nemůže mít kvalifikátor 25155. 00000 – sloupec použitý v NATURAL spojení nemůže mít kvalifikátor