2012-01-23 10 views
6

मैं SQLite सी एपीआई का एक रैपर बना रहा हूं। और मैं पूर्णांक प्रकार के रूप में पंक्ति को वापस करना चाहता हूं। त्रुटि केस को चिह्नित करने के लिए, मुझे पंक्ति के अमान्य मान की आवश्यकता है। क्या SQLite rowid के अमान्य मान है? या हस्ताक्षरित 64 बिट पूर्णांक में सभी मान पंक्ति के लिए मान्य हैं? (क्योंकि यदि ऐसा है, तो मुझे अंकन त्रुटि केस लागू करने का एक और तरीका चुनना है)SQLite rowid की मान्य श्रृंखला?

+0

यहां पंक्ति के बारे में कल्पना है: http://www.sqlite.org/autoinc.html – Eonil

उत्तर

13

पंक्ति आईडी 64-बिट हस्ताक्षरित पूर्णांक हैं, इसलिए अधिकतम 0x7FFFFFFFFFFFFFFFLL है। लेकिन जब तक कोई नकारात्मक या शून्य पंक्ति आईडी स्पष्ट रूप से दर्ज नहीं की जाती है, तब तक स्वत: जेनरेट की गई पंक्ति आईडी शून्य से अधिक होती हैं। यदि आप निश्चित हो सकते हैं कि पंक्ति आईडी हमेशा स्वचालित रूप से जेनरेट की जाएंगी तो त्रुटि स्थिति रिटर्न के लिए शून्य या -1 सुरक्षित मान होंगे।

आगे सोचते हुए, मुझे एहसास है कि sqlite3_last_insert_rowid एपीआई कॉल शून्य में वापस आती है यदि तालिका में कुछ भी नहीं डाला गया है, इस प्रकार शून्य को वास्तविक रूप से "अमान्य" पंक्ति आईडी बनाते हैं।

+0

स्पष्ट शून्य और नकारात्मक मानों के बारे में उल्लेख करने के लिए धन्यवाद डाला जा सकता है। मैं कुछ और तंत्र जाऊंगा। :) – Eonil

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