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;