सामान्य तौर पर, 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
. का उपयोग करने से कहीं अधिक काम है ।