Бих предложил да посочите задействането на тригера за всеки ред. Намирам ги за много по-лесни.
Можете да преброите, за да видите дали MovieStar.Name
стойността вече съществува и след това вмъкнете, ако не съществува; това е подобно на подхода, който имате по-горе. Това няма да успее, ако друг потребител вмъкне филмовата звезда между времето, когато проверявате, и времето, когато вмъкнете, но вероятно е достатъчно добро за присвояване на клас. Има приети подходи без провал за това, но може все още да не сте ги разгледали в класа.
Опитайте нещо подобно; вероятно включва всичко, което сте разгледали в класа досега:
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;