मुझे कोई दस्तावेज नहीं मिल रहा है जो कहता है कि आपके पास प्राथमिक कुंजी फ़ील्ड पर डिफ़ॉल्ट मान नहीं हो सकता है। हालांकि इस परीक्षण कोड के साथ मेरे प्रयोग खत्म नहीं हुए। इसे मान्य के रूप में स्वीकार किया जाता है, लेकिन केवल (n+1) के मान उत्पन्न करता है। यह गैर प्राथमिक कुंजी क्षेत्रों के लिए ठीक काम करता है।

CREATE Table A (
  id INTEGER PRIMARY KEY default(random())
)

क्या यह संभव है?

0
Nicholas 31 जुलाई 2017, 05:16

2 जवाब

सबसे बढ़िया उत्तर

integer primary key SQlite में एक प्रकार का कीवर्ड है जो rowid का एक उपनाम है, और यदि आप एक प्रदान करते हैं तो SQlite चुपचाप आपके डिफ़ॉल्ट को अनदेखा कर देगा।

तो आपके पास दो समाधान हैं:

  1. rowid के बिना एक टेबल बनाएं

    create table A (id integer primary key default(random())) without rowid;
    
  2. id को "कीवर्ड" integer primary key का उपयोग किए बिना, एक पूर्णांक प्राथमिक कुंजी के रूप में घोषित करें, उदाहरण के लिए integer को int से बदलकर:

    create table A (id int primary key default(random()));
    

आप without rowid मार्ग अपनाना चाहते हैं या नहीं, इस पर आप इस अनुभाग को पढ़ सकते हैं दस्तावेज़ीकरण।

2
P-Gn 31 जुलाई 2017, 08:37

आप autoincrement का उपयोग कर सकते हैं:

CREATE Table A (
    id INTEGER PRIMARY KEY AUTOINCREMENT
);

कड़ाई से बोलना यह आवश्यक नहीं है, क्योंकि SQLite में एक अंतर्निहित rowid है।

0
Gordon Linoff 31 जुलाई 2017, 05:27