Oracle
 sql >> Base de données >  >> RDS >> Oracle

Insertion/mise à jour du déclencheur Oracle

Je suggérerais de spécifier le déclenchement du déclencheur pour chaque ligne. Je les trouve beaucoup plus faciles.

Vous pouvez faire un comptage pour voir si le MovieStar.Name la valeur existe déjà, puis insérez-la si ce n'est pas le cas ; c'est similaire à l'approche que vous avez ci-dessus. Cela échouera si un autre utilisateur insère la star de cinéma entre le moment où vous vérifiez et le moment où vous insérez, mais c'est probablement suffisant pour un devoir de classe. Il existe des approches sans échec acceptées pour cela, mais vous ne les avez peut-être pas encore abordées en classe.

Essayez quelque chose comme ça; il intègre probablement tout ce que vous avez vu en classe jusqu'à présent :

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;