मैं प्रत्येक पंक्ति के लिए ट्रिगर आग निर्दिष्ट करने का सुझाव दूंगा। मुझे ये बहुत आसान लगते हैं।
आप यह देखने के लिए गिनती कर सकते हैं कि 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;