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

81

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

Теги:
database
android-sqlite

3 ответа

171
Лучший ответ

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

1

Случается, что я только начинаю изучать кодирование, и мне нужно было подобное, как вы только что спросили в 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>
);
  • 0
    Это та же логика, что и в MySQL; значение по умолчанию для столбца, допускающего значение NULL, уже равно NULL, поэтому для установки значения по умолчанию в противном случае будет подразумеваться, что столбец не имеет значения NULL. Если вы укажете значение по умолчанию для столбца, который может иметь значение NULL, не объявляя его как NOT NULL, это может сбить вас с толку при вставке значений NULL по умолчанию.
  • 0
    Оператор UNIQUE не нужен и уже подразумевается оператором PRIMARY KEY.
Показать ещё 1 комментарий
1

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

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

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

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

Примеры:

Count INTEGER DEFAULT 0,
LastSeen TEXT DEFAULT (datetime('now'))
  • 0
    Спасибо за разъяснение использования выражения, это было то, что мне нужно по default .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню