SQLite
 sql >> डेटाबेस >  >> RDS >> SQLite

SQLite प्राथमिक कुंजी AutoIncrement काम नहीं करता है

दस्तावेज़ीकरण से:

<ब्लॉकक्वॉट>

CREATE TABLE AS का उपयोग करके बनाई गई तालिका में कोई प्राथमिक कुंजी नहीं है और किसी भी प्रकार की कोई बाधा नहीं है। प्रत्येक कॉलम का डिफ़ॉल्ट मान NULL होता है।

आपको UNIQUE जोड़ने की जरूरत नहीं है एक कॉलम पर बाधा जिसमें PRIMARY KEY . है बाधा।
स्पष्टीकरण:

<ब्लॉकक्वॉट>

एक अद्वितीय बाधा प्राथमिक कुंजी बाधा के समान है, सिवाय इसके कि एक तालिका में कई अद्वितीय बाधाएं हो सकती हैं।

इसके बजाय NOT NULL add जोड़ें .यही कारण है:

<ब्लॉकक्वॉट>

SQL मानक के अनुसार, प्राथमिक कुंजी का अर्थ हमेशा NOTNULL होना चाहिए। दुर्भाग्य से, कुछ शुरुआती संस्करणों में बग के कारण, SQLite में ऐसा नहीं है। जब तक कॉलम एक इंटीजर प्राथमिक कुंजी नहीं है या तालिका तालिका के बिना तालिका है या कॉलम को न्यूल घोषित नहीं किया गया है, SQLite प्राथमिक कुंजी कॉलम में नल मानों की अनुमति देता है। SQLite को मानक के अनुरूप बनाया जा सकता है, लेकिन ऐसा करने से लीगेसी एप्लिकेशन टूट सकते हैं। इसलिए, यह केवल इस तथ्य का दस्तावेजीकरण करने का निर्णय लिया गया है कि SQLite अधिकांश प्राथमिक कुंजी कॉलम में NULLs की अनुमति देता है।


मैं इस कॉलम परिभाषा का उपयोग करने की सलाह देता हूं:

CREATE TABLE conversations (
    conversation_id INTEGER PRIMARY KEY NOT NULL AUTOINCREMENT,
...
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक टैब से अलग सूची के रूप में आउटपुट SQLite क्वेरी परिणाम

  2. SQLite के LIKE ऑपरेटर को केस-सेंसिटिव कैसे बनाएं

  3. SQLite JSON_EACH ()

  4. SQLite में डेटा एन्क्रिप्ट करें

  5. पूर्णांक स्तंभ का डिफ़ॉल्ट मान सेट करें SQLite