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


117

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

Ответы:


232

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

Бывает, что вы должны определить столбец « Ограничение » как « Not Null », а затем ввести желаемое определение, используя « Ограничение по умолчанию » , иначе оно не будет работать ( я не знаю, является ли это 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. Если вы укажете значение по умолчанию для столбца, допускающего значение NULL, не объявляя его NOT NULL, это может сбить вас с толку при вставке значений NULL по умолчанию.
ChoNuff

1
Оператор UNIQUE не требуется и уже подразумевается оператором PRIMARY KEY.
dani

@dani Я согласен с вами, но это был единственный способ обойти ошибки, которые SQLiteStudio 3.1.1 генерировал из-за отсутствия «уникального» условия
Надер Белал
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.