Ich würde vorschlagen, das Triggerfeuer für jede Zeile anzugeben. Ich finde diese viel einfacher.
Sie können zählen, ob der MovieStar.Name
Wert existiert bereits und dann einfügen, falls nicht; das ist ähnlich wie der Ansatz, den Sie oben haben. Dies schlägt fehl, wenn ein anderer Benutzer den Filmstar zwischen der Zeit, die Sie überprüfen, und der Zeit, die Sie einfügen, einfügt, aber es ist wahrscheinlich gut genug für eine Klassenaufgabe. Dafür gibt es anerkannte sichere Ansätze, aber Sie haben sie möglicherweise noch nicht im Unterricht behandelt.
Versuchen Sie so etwas; es enthält wahrscheinlich alles, was Sie bisher im Unterricht behandelt haben:
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;