Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ट्रिगर डालने के बाद उत्परिवर्तन त्रुटि

ऑरैकल में ट्रिगर के दो स्तर होते हैं:पंक्ति स्तर और तालिका स्तर।

पंक्ति स्तर के ट्रिगर 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 में अन्य सभी रिकॉर्ड अपडेट करना चाहता है। टेबल।

खैर, यह संभव है, लेकिन यह थोड़ा मुश्किल है। इसे ठीक से करने के लिए, आपको आवश्यकता होगी

  1. एक pl/sql पैकेज और पैकेज हेडर में एक वेरिएबल जो ट्रिगर्स द्वारा संशोधित किया गया है। यह चर एक सूची हो सकती है जिसमें नए डाले गए रिकॉर्ड की आईडी हो। ट्रिगर डालने के बाद पंक्ति स्तर सूची में एक नई आईडी जोड़ देगा। इस पैकेज चर की सामग्री प्रत्येक भिन्न सत्र के लिए भिन्न होगी, तो चलिए इस चर को session_variable कहते हैं ।
  2. इन्सर्ट ट्रिगर के बाद पंक्ति स्तर, जो session_variable में नई आईडी जोड़ देगा ।
  3. सम्मिलित ट्रिगर के बाद तालिका स्तर जो session_variable . से आईडी प्राप्त करेगा , आईडी को संसाधित करें और फिर इसे session_variable . से हटा दें . यह ट्रिगर aso_quote_headers_all पर आवश्यक चयन/अपडेट निष्पादित कर सकता है। नई डाली गई आईडी संसाधित होने के बाद, इस ट्रिगर को यह सुनिश्चित करना चाहिए कि इसे session_variable से हटा दिया गया है ।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle XML DB रिपॉजिटरी में XML फ़ाइल आयात करें

  2. क्या कोई SQL कथन है जो 2 लंबे स्तंभों को स्तंभों के कई जोड़े में तोड़ देगा?

  3. कैसे एक अद्वितीय बाधा उल्लंघन के आसपास पाने के लिए?

  4. System.Data.OracleClient नेमस्पेस बंद कर दिया?

  5. JDBC:एकल डेटाबेस आमंत्रण के माध्यम से एकाधिक परिणाम सेट लौटाना - Oracle के लिए काम नहीं करना