Встановити значення за замовчуванням цілого стовпця SQLite


116

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

Відповіді:


231

Використовуйте ключове слово 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) ).

Буває, що ви повинні визначити " Обмеження " стовпця як " Не нульовий ", а потім ввести потрібне визначення за допомогою " За замовчуванням " " Обмеження ", або це не спрацює ( я не знаю, чи це 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 за замовчуванням.
ChoNuff

1
UNIQUE заява не потрібна і вже має на увазі вираз PRIMARY KEY.
Дані

@dani Я згоден з вами, але це був єдиний спосіб обійти помилки, які SQLiteStudio 3.1.1 генерував через відсутність умови "Унікальний"
Надер Белал
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.