भाग 1: एसक्यूएल इंजेक्शन के जोखिम को कम करने के लिए मैं व्यक्तिगत रूप से एक ही प्रश्न के भीतर एकाधिक कथन बैच नहीं करता। यह आपके डेटा स्रोत में कोल्डफ़्यूज़न व्यवस्थापक पर एक सेटिंग है। एक संग्रहीत कार्यविधि को निष्पादित करना, जो हो सकता है कि आप क्या कर रहे हैं (?), एक और कहानी है, लेकिन, यदि आपका इरादा है, तो आपको अपने प्रश्न को "mySQL संग्रहीत प्रक्रिया के साथ सम्मिलित करने के बाद प्राथमिक कुंजी प्राप्त करें" के लिए फिर से लिखना चाहिए।
भाग 2: कोल्डफ्यूजन, कई चीजों की तरह, नए डाले गए रिकॉर्ड के लिए प्राथमिक कुंजी प्राप्त करना बहुत आसान बनाता है - भले ही आप ऑटो-इन्क्रीमेंट कुंजी, GUID या Oracle के ROWNUM जैसी किसी चीज़ का उपयोग कर रहे हों। यह MSSQL या MySQL सहित Adobe ColdFusion द्वारा समर्थित लगभग हर डेटाबेस पर काम करेगा। एकमात्र अपवाद डेटाबेस का संस्करण है - उदाहरण के लिए, MySQL 3 इसका समर्थन नहीं करेगा; हालांकि, MySQL 4+ होगा।
<cfquery result="result">
INSERT INTO myTable (
title
) VALUES (
<cfqueryparam value="Nice feature!" cfsqltype="cf_sql_varchar">
)
</cfquery>
<--- get the primary key of the inserted record --->
<cfset NewPrimaryKey = result.generatedkey>
CF9+ के रूप में, आप सामान्य कुंजी नाम का उपयोग करके नई आईडी (किसी भी डेटाबेस के लिए) तक पहुंच सकते हैं:
result.GENERATEDKEY // All databases
CF8 के लिए, अलग-अलग डेटाबेस में परिणाम मान के भीतर अलग-अलग कुंजियाँ होंगी। cfquery प्रलेखन से कॉपी करने में मेरी मदद करने के लिए यहां एक सरल तालिका है। .
result.identitycol // MSSQL
result.rowid // Oracle
result.sys_identity // Sybase
result.serial_col // Informix
result.generated_key // MySQL
यदि आपके कोई प्रश्न हैं तो आप निम्नानुसार एक सुंदर डंप देख सकते हैं:
<cfdump var="#result#" />