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

Oracle में JDBC बैच डालने से उत्पन्न कुंजियाँ कैसे प्राप्त करें?

JDBC 4.1 विनिर्देश, खंड 13.6 स्वतः उत्पन्न मान प्राप्त करना कहते हैं:

<ब्लॉककोट>

यह कार्यान्वयन-परिभाषित है कि क्या getGeneratedKeys executeBatch . को लागू करने के बाद जेनरेट किए गए मान लौटाएगा विधि।

इसलिए आपको यह जांचना होगा कि क्या आपका ड्राइवर वास्तव में बैच अपडेट के लिए इसका समर्थन करता है। जैसा कि फिलिप ओ द्वारा उत्तर में इंगित किया गया है, उत्पन्न कुंजियों की पुनर्प्राप्ति बैच अपडेट के साथ समर्थित नहीं है जैसा कि Oracle 12 JDBC मानक समर्थन में प्रलेखित है:

<ब्लॉककोट>

आप बैच अपडेट के साथ ऑटो-जेनरेटेड कुंजियों को संयोजित नहीं कर सकते।

किसी भी स्थिति में यदि यह आपके ड्राइवर द्वारा समर्थित है, तो आपके स्टेटमेंट की तैयारी को नीचे दिए गए कोड में बदलना चाहिए ताकि ड्राइवर को जेनरेट की गई चाबियों को पुनः प्राप्त करने का निर्देश दिया जा सके:

ps = con.prepareStatement(insert, Statement.RETURN_GENERATED_KEYS);

नोट:आपको अन्य जेनरेट की गई चाबियों को तैयार करने के तरीकों में से एक का उपयोग करने की आवश्यकता हो सकती है (prepareStatement(sql, columnIndexes) या prepareStatement(sql, columnNames) ) क्योंकि Oracle ROW_ID लौटाएगा मेरे उदाहरण में विधि के साथ।



  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 वेयरहाउस बिल्डर के साथ डेटा वेयरहाउसिंग ETL डेटा प्रोफाइलिंग

  2. पायथन मॉड्यूल cx_Oracle मॉड्यूल नहीं मिला

  3. स्ट्रिंग रूपांतरण के लिए Oracle दिनांक

  4. Oracle में JDK संस्करण की जाँच कैसे करें?

  5. ORA-02014 को कैसे हल करें:DISTINCT, GROUP BY के साथ दृश्य से अद्यतन के लिए चयन नहीं कर सकता