ऑरैकल में ट्रिगर के दो स्तर होते हैं:पंक्ति स्तर और तालिका स्तर।
पंक्ति स्तर के ट्रिगर for each row
निष्पादित किए जाते हैं . तालिका स्तर ट्रिगर प्रति कथन निष्पादित किया जाता है, भले ही कोई कथन एक पंक्ति से अधिक बदल गया हो।>
इस मामले में, अद्यतन विवरण की कोई आवश्यकता नहीं है। बस इसे आजमाएं:
CREATE OR REPLACE TRIGGER aso_quote_cuhk_trigger
BEFORE INSERT
ON aso.aso_quote_headers_all
FOR EACH ROW
BEGIN
:new.quote_expiration_date=sysdate+90;
END;
/
संपादित करें राजेश ने उल्लेख किया कि यह संभव है, कि एक नई पंक्ति डालने से पहले, ओपी aso_quote_headers_all
में अन्य सभी रिकॉर्ड अपडेट करना चाहता है। टेबल।
खैर, यह संभव है, लेकिन यह थोड़ा मुश्किल है। इसे ठीक से करने के लिए, आपको आवश्यकता होगी
- एक pl/sql पैकेज और पैकेज हेडर में एक वेरिएबल जो ट्रिगर्स द्वारा संशोधित किया गया है। यह चर एक सूची हो सकती है जिसमें नए डाले गए रिकॉर्ड की आईडी हो। ट्रिगर डालने के बाद पंक्ति स्तर सूची में एक नई आईडी जोड़ देगा। इस पैकेज चर की सामग्री प्रत्येक भिन्न सत्र के लिए भिन्न होगी, तो चलिए इस चर को
session_variable
कहते हैं । - इन्सर्ट ट्रिगर के बाद पंक्ति स्तर, जो
session_variable
में नई आईडी जोड़ देगा । - सम्मिलित ट्रिगर के बाद तालिका स्तर जो
session_variable
. से आईडी प्राप्त करेगा , आईडी को संसाधित करें और फिर इसेsession_variable
. से हटा दें . यह ट्रिगर aso_quote_headers_all पर आवश्यक चयन/अपडेट निष्पादित कर सकता है। नई डाली गई आईडी संसाधित होने के बाद, इस ट्रिगर को यह सुनिश्चित करना चाहिए कि इसेsession_variable
से हटा दिया गया है ।