Установить значение по умолчанию для целочисленного столбца 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

Karakuri
источник
8

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

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

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

  • буквальное значение
  • ( выражение )

Примеры:

Count INTEGER DEFAULT 0,
LastSeen TEXT DEFAULT (datetime('now'))
frogatto
источник
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 генерировал из-за отсутствия «уникального» условия
Надер Белал