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


116

मैं Android में एक SQLite डेटाबेस बना रहा हूं।

db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" 
    + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
    + KEY_NAME + " TEXT NOT NULL, " 
    + KEY_WORKED + " INTEGER, "
    + KEY_NOTE + " INTEGER);");

क्या (शून्य) KEY_NOTEबनने के लिए बनाई गई प्रत्येक पंक्ति के लिए (जो एक पूर्णांक है) का डिफ़ॉल्ट मान सेट करना संभव है 0? यदि हां, तो सही कोड क्या होना चाहिए।

जवाबों:


231

SQLite कीवर्ड का उपयोग करें default

db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" 
    + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
    + KEY_NAME + " TEXT NOT NULL, "
    + KEY_WORKED + " INTEGER, "
    + KEY_NOTE + " INTEGER DEFAULT 0);");

यह लिंक उपयोगी है: http://www.sqlite.org/lang_createtable.html


8

डिफ़ॉल्ट मान वाला एक स्तंभ:

CREATE TABLE <TableName>(
...
<ColumnName> <Type> DEFAULT <DefaultValue>
...
)

<DefaultValue> इसके लिए एक प्लेसहोल्डर है:

  • मूल्य शाब्दिक
  • ( अभिव्यक्ति )

उदाहरण:

Count INTEGER DEFAULT 0,
LastSeen TEXT DEFAULT (datetime('now'))

3

ऐसा होता है कि मैं बस कोडिंग सीखना शुरू कर रहा हूं और मुझे कुछ इसी तरह की जरूरत है जैसा कि आपने SQLite में पूछा है ( मैं [SQLiteStudio] (3.1.1) का उपयोग करके )।

ऐसा होता है कि आपको कॉलम के ' कांस्ट्रेन्ड ' को ' नॉट नल ' के रूप में परिभाषित करना होगा, फिर ' डिफॉल्ट ' ' कांस्ट्रेन्थ ' का उपयोग करके अपनी इच्छित परिभाषा में प्रवेश करना होगा या यह काम नहीं करेगा ( मुझे नहीं पता कि यह SQLite या प्रोग्राम रिक्वायरमेंट है )।

यहाँ मैं उपयोग किया गया कोड है:

CREATE TABLE <MY_TABLE> (
<MY_TABLE_KEY>       INTEGER    UNIQUE
                                PRIMARY KEY,
<MY_TABLE_SERIAL>    TEXT       DEFAULT (<MY_VALUE>) 
                                NOT NULL
<THE_REST_COLUMNS>
);

यह वही तर्क है जिसका उपयोग MySQL में किया जाता है; एक अशक्त स्तंभ का डिफ़ॉल्ट पहले से ही NULL है, इसलिए डिफ़ॉल्ट रूप से सेट करना अन्यथा इसका अर्थ होगा कि स्तंभ गैर-अशक्त है। यदि आप किसी रिक्त स्तंभ पर डिफ़ॉल्ट को बिना NULL घोषित किए निर्दिष्ट करते हैं, तो डिफ़ॉल्ट NULL मान सम्मिलित किए जाने पर यह आपको भ्रमित कर सकता है।
चोईनाफ

1
UNIQUE स्टेटमेंट की आवश्यकता नहीं है और पहले से ही PRIMARY KEY स्टेटमेंट द्वारा निहित है।
दानी

@dani मैं आपसे सहमत हूं, लेकिन SQLiteStudio 3.1.1 की त्रुटियों को दरकिनार करने का एकमात्र तरीका यह था कि "यूनिक" स्थिति की कमी से उत्पन्न हो रहा था
नादेर बेलाल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.