Suggerirei di specificare il trigger fire per ogni riga. Trovo questi molto più facili.
Puoi fare un conteggio per vedere se il MovieStar.Name
il valore esiste già e quindi inserire se non lo è; è simile all'approccio che hai sopra. Ciò fallirà se un altro utente inserisce la star del cinema tra il momento in cui controlli e il momento in cui inserisci, ma probabilmente è abbastanza buono per un compito in classe. Esistono approcci accettati per questo, ma potresti non averli ancora trattati in classe.
Prova qualcosa del genere; probabilmente incorpora tutto ciò che hai trattato in classe finora:
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;