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

DUP_VAL_ON_INDEX को ट्रिगर करने वाले मान कैप्चर करें

आदर्श रूप से, मैं डीएमएल त्रुटि लॉगिंग का उपयोग करने का सुझाव दूंगा। उदाहरण के लिए

त्रुटि लॉग तालिका बनाएं

begin
  dbms_errlog.create_error_log( dml_table_name => 'EMPLOYEE',
                                err_log_table_name => 'EMPLOYEE_ERR' );
end;

DML त्रुटि लॉगिंग का उपयोग करें

BEGIN
  insert into employee( id )
    select id 
      from (select '01' id from dual
            union all
            select '02' from dual) 
    log errors into employee_err
        reject limit unlimited;
END;

विफल होने वाली प्रत्येक पंक्ति के लिए, यह पंक्ति के डेटा को EMPLOYEE_ERR में लॉग कर देगा अपवाद के साथ तालिका। फिर आप केवल पहली पंक्ति विफल होने के बजाय सभी त्रुटियों को देखने के लिए त्रुटि लॉग तालिका को क्वेरी कर सकते हैं।

यदि त्रुटि लॉग तालिका बनाना कोई विकल्प नहीं है, तो आप थोक संचालन के साथ SQL से PL/SQL में जा सकते हैं। यह धीमा होगा लेकिन आप SAVE EXCEPTIONS का उपयोग कर सकते हैं FORALL . का खंड अपवादों की एक नेस्टेड तालिका बनाने के लिए कथन जिसे आप फिर से चालू कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC कनेक्शन डिफ़ॉल्ट ऑटोकॉमिट व्यवहार

  2. Oracle में डुप्लिकेट पंक्तियों का चयन करने के 6 तरीके

  3. कनेक्ट बाय का मानक विकल्प?

  4. ORACLE और TRIGGERS (सम्मिलित, अद्यतन, हटाए गए)

  5. cx_Oracle और डेटा स्रोत प्रतिमान