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

JDBC से 2 टेबल में लॉग आईडी डालने के लिए Oracle अनुक्रम का उपयोग करना?

सामान्य तौर पर, MAX(log_id) . का चयन करना आपको वही मान नहीं देने वाला है जो logid_seq.nextval बशर्ते। यह मानते हुए कि यह एक बहु-उपयोगकर्ता प्रणाली है, कोई अन्य उपयोगकर्ता बड़ी log_id के साथ एक और पंक्ति सम्मिलित कर सकता था आपकी क्वेरी के निष्पादित होने से पहले आपके द्वारा डाली गई पंक्ति से अधिक मान।

यह मानते हुए कि दोनों INSERT कथन एक ही सत्र में चलाए जाते हैं, सबसे आसान विकल्प शायद logid_seq.currval का उपयोग करना है दूसरे INSERT . में बयान। currval अनुक्रम का अंतिम मान लौटाएगा जो वर्तमान सत्र में लौटाया गया था, इसलिए यह हमेशा वही मान लौटाएगा जो nextval द्वारा उत्पन्न किया गया था पहले स्टेटमेंट में कॉल करें।

INSERT INTO tableB (LOG_ID, RESPONSE_CODE, RESPONSE_MSG) 
  VALUES( logid_seq.currval, ?, ? )

वैकल्पिक रूप से, आप RETURNING . का उपयोग कर सकते हैं अनुक्रम मान को स्थानीय चर में लाने के लिए अपने पहले कथन में खंड और दूसरे INSERT में इसका उपयोग करें बयान। लेकिन यह शायद currval . का उपयोग करने से कहीं अधिक काम है ।



  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 LISTAGG फ़ंक्शन का उपयोग कैसे करें

  2. एक ट्रिगर बनाना

  3. सबक्वेरी में अंतर दृश्यता शामिल हों और कहाँ

  4. ओरेकल क्वेरी को MySQL क्वेरी में कनवर्ट करना

  5. Oracle ROWID मान