it-swarm.dev

تعيين القيمة الافتراضية لعمود عدد صحيح سكليتي

أقوم بإنشاء قاعدة بيانات SQLite في Android.

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 (صفر)؟ إذا كان الأمر كذلك ، فماذا يجب أن يكون الرمز الصحيح.

102
Born Again

استخدم الكلمة الأساسية 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

207
Karakuri

عمود ذو القيمة الافتراضية:

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

<DefaultValue> هو عنصر نائب لـ:

  • القيمة الحرفية
  • تعبير ()

أمثلة:

Count INTEGER DEFAULT 0,
LastSeen TEXT DEFAULT (datetime('now'))
4
Hi I'm Frogatto

يحدث أنني بدأت للتو في تعلم الترميز وكنت بحاجة إلى شيء مشابه كما طلبت للتو في 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>
);
2
Nader Belal