क्या आप एक अपवाद उठाना चाहते हैं (जो सम्मिलन को सफल होने से रोकेगा)? या क्या आप इन्सर्ट को सफल होने देना चाहते हैं और dbms_output
. पर एक स्ट्रिंग लिखना चाहते हैं बफर जो मौजूद हो भी सकता है और नहीं भी हो सकता है और इंसर्ट चलाने वाले इंसान को दिखाया जा सकता है या नहीं भी दिखाया जा सकता है?
किसी भी स्थिति में, आप चाहते हैं कि यह एक पंक्ति-स्तरीय ट्रिगर हो, न कि कथन-स्तरीय ट्रिगर, इसलिए आपको for each row
जोड़ना होगा खंड।
CREATE OR REPLACE TRIGGER person_id_trigg
AFTER INSERT
ON person
FOR EACH ROW
अगर आप एक अपवाद उठाना चाहते हैं
BEGIN
IF( length( :new.id ) <> 11 )
THEN
RAISE_APPLICATION_ERROR( -20001,
'The new ID value must have a length of 11' );
END IF;
END;
यदि आप संभावित रूप से आउटपुट प्रिंट करना चाहते हैं, लेकिन insert
. की अनुमति दें सफल होने के लिए
BEGIN
IF( length( :new.id ) <> 11 )
THEN
dbms_output.put_line( 'The new ID value must have a length of 11' );
END IF;
END;
बेशक, वास्तव में, आप इस तरह की चीज़ के लिए कभी भी ट्रिगर का उपयोग नहीं करेंगे। वास्तविक दुनिया में, आप एक बाधा का उपयोग करेंगे।