2009-07-17 9 views
9

हमारे पास एक प्राथमिक कुंजी वाला एक टेबल है जो तालिका पर ट्रिगर द्वारा डालने पर पॉप्युलेट हो जाता है - ट्रिगर को अनुक्रम से अगले अनुक्रम संख्या मिलती है जिसे हमने तालिका के लिए बनाया है और इसका उपयोग करता है डालने पर कुंजी का मूल्य। अब हम SQL सर्वर में चुनिंदा @@ scope_identity के समान, हमारी डालने की प्रक्रिया (पीएल \ एसक्यूएल) में उस मान को वापस करने में सक्षम होना चाहते हैं। मैं पूरे दिन गुगल रहा हूं और मूल रूप से कुछ भी नहीं आया - कोई भी इससे पहले सफल रहा है?ओरेकल - नए डाले गए कुंजी मान को वापस करें

धन्यवाद

उत्तर

19

मैं अगर यह चलाता साथ काम करता है, लेकिन लौटने खंड आप जो खोज रहे हैं हो सकता है पता नहीं है:

INSERT INTO my_table (col_1, col_2) 
    VALUES ('foo', 'bar') 
    RETURNING pk_id INTO my_variable; 
+0

हां - यह दिलचस्प लग रहा है और मैं इसे आज़मा दूंगा। –

+0

ट्रिगर के साथ एक चैंप की तरह काम किया! मैं हर बार ट्रिगर द्वारा बनाए गए नए कुंजी मान को पूरी तरह से प्राप्त करता हूं। धन्यवाद। –

+0

मुझे "अनुपलब्ध कीवर्ड" कहने में त्रुटि मिली ... लेकिन PHP के साथ ऐसा करने का प्रयास कर रहा था। –

0

मुझे लगता है कि आप एक प्रतिदेय वक्तव्य के लिए देख रहे हैं। यदि आप जावा से इसे प्राप्त करने का प्रयास कर रहे हैं तो यहां javadoc है।

+0

यह ठीक काम करेगा अगर हम में नव निर्मित कुंजी के साथ उत्पादन पैरामीटर पॉप्युलेट सकता है पीएल \ एसक्यूएल - जो मूल रूप से मैं सवाल में पूछ रहा हूं। कुंजी डालने ट्रिगर में आबादी है - अब मैं इसे एक सम्मिलित संग्रहीत प्रक्रिया में कैसे पकड़ूं? –

0

क्यों न केवल _sequence.currval वापस लौटें?

+0

दुर्भाग्यवश - अनुक्रम का उपयोग एक से अधिक तालिकाओं द्वारा किया जाता है। –

संबंधित मुद्दे