Tôi khuyên bạn nên chỉ định kích hoạt kích hoạt cho mỗi hàng. Tôi thấy những điều này dễ dàng hơn rất nhiều.
Bạn có thể đếm xem MovieStar.Name
giá trị đã tồn tại và sau đó chèn nếu nó không có; tương tự như cách tiếp cận bạn có ở trên. Điều này sẽ không thành công nếu người dùng khác chèn ngôi sao phim giữa thời điểm bạn kiểm tra và thời điểm bạn chèn, nhưng nó có thể đủ tốt cho một bài tập trong lớp. Có những cách tiếp cận không thất bại được chấp nhận cho việc này nhưng bạn có thể chưa bao gồm chúng trong lớp.
Hãy thử một cái gì đó như thế này; nó có thể kết hợp mọi thứ bạn đã đề cập trong lớp cho đến nay:
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;