2008-11-20 23 views
17

मैं एक साधारण INSERT करने की कोशिश कर रहा हूं और पहचान (स्वत: वृद्धि प्राथमिक कुंजी) वापस कर रहा हूं। मैंSQLite समर्थन SCOPE_IDENTITY करता है?

cmd.CommandText = "INSERT INTO Prototype (ParentID) VALUES (NULL); SELECT SCOPE_IDENTITY();"; 

की कोशिश की है और मैं निम्न त्रुटि

EnvironmentError: SQLite error 
no such function: SCOPE_IDENTITY

करता है SQLite समर्थन SCOPE_IDENTITY प्राप्त?
यदि हां, तो मैं इसका उपयोग कैसे करूं?
यदि नहीं, तो मेरे (अधिमानतः "थ्रेड-सुरक्षित" विकल्प क्या हैं?

उत्तर

16

FAQ देखें। sqlite3_last_insert_rowid() फ़ंक्शन इसे करेगा। यद्यपि ट्रिगर की सावधानी बरतें।

+0

sqlite3_last_insert_rowid है() threadsafe? क्या यह मौजूदा दायरे तक सीमित है जैसे SCOPE_IDENTITY? – Greg

+1

दस्तावेज़ीकरण पढ़ें। वर्तमान कनेक्शन पर अंतिम पहचान। –

23

आप प्रोग्रामिंग के लिए सी इंटरफ़ेस उपयोग कर रहे हैं नहीं और एक एसक्यूएल कमान से प्रक्रिया क्या करना चाहते हैं की कोशिश: SELECT last_insert_rowid()

http://www.sqlite.org/lang_corefunc.html

+0

मेरे दृष्टिकोण से यह स्वीकार्य उत्तर होना चाहिए। – JanR

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