Установить значение по умолчанию для целочисленного столбца SQLite

Я создаю базу данных 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 (ноль)? Если да, то какой должен быть правильный код.

Ответ 1

Используйте ключевое слово 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

Ответ 2

Столбец со значением по умолчанию:

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

<DefaultValue> является заполнителем для:

  • значение литерал
  • ( выражение )

Примеры:

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

Ответ 3

Случается, что я только начинаю изучать кодирование, и мне нужно было подобное, как вы только что спросили в SQLite (Я использую [SQLiteStudio] ( 3.1.1)).

Бывает, что вы должны определить столбец Constraint 'как' Not Null ", затем введите нужное определение, используя По умолчанию '' Constraint strong > 'или это не сработает (я не знаю, является ли это SQLite или программным требованием).

Вот код, который я использовал:

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