Ustaw domyślną wartość kolumny SQLite z liczbą całkowitą

117

Tworzę bazę danych SQLite w systemie Android.

db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" 
    + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
    + KEY_NAME + " TEXT NOT NULL, " 
    + KEY_WORKED + " INTEGER, "
    + KEY_NOTE + " INTEGER);");

Czy można ustawić domyślną wartość KEY_NOTE(która jest liczbą całkowitą) dla każdego tworzonego wiersza na 0(zero)? Jeśli tak, jaki powinien być poprawny kod.

Narodzony na nowo
źródło

Odpowiedzi:

232

Użyj słowa kluczowego 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);");

Ten link jest przydatny: http://www.sqlite.org/lang_createtable.html

Karakuri
źródło
8

Kolumna z wartością domyślną:

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

<DefaultValue> jest symbolem zastępczym dla:

  • wartość literalna
  • ( wyrażenie )

Przykłady:

Count INTEGER DEFAULT 0,
LastSeen TEXT DEFAULT (datetime('now'))
frogatto
źródło
3

Zdarza się, że dopiero zaczynam uczyć się kodowania i potrzebowałem czegoś podobnego, o co prosiłeś w SQLite ( używam [SQLiteStudio] (3.1.1) ).

Zdarza się, że musisz zdefiniować „ Constraint ” kolumny jako „ Not Null ”, a następnie wprowadzić żądaną definicję za pomocą „ Default ” „ Constraint ”, bo inaczej nie zadziała ( nie wiem, czy to jest SQLite, czy wymóg programu ).

Oto kod, którego użyłem:

CREATE TABLE <MY_TABLE> (
<MY_TABLE_KEY>       INTEGER    UNIQUE
                                PRIMARY KEY,
<MY_TABLE_SERIAL>    TEXT       DEFAULT (<MY_VALUE>) 
                                NOT NULL
<THE_REST_COLUMNS>
);
Nader Belal
źródło
To ta sama logika, która jest używana w MySQL; Wartość domyślna kolumny dopuszczającej wartość null ma już wartość NULL, więc ustawienie wartości domyślnej oznaczałoby, że kolumna nie dopuszcza wartości null. Jeśli określisz wartość domyślną w kolumnie dopuszczającej wartość null bez deklarowania jej jako NIE NULL, może to być mylące, gdy zostaną wstawione domyślne wartości NULL.
ChoNuff
1
Instrukcja UNIQUE nie jest potrzebna i jest już implikowana przez instrukcję PRIMARY KEY.
dani
@dani Zgadzam się z tobą, ale był to jedyny sposób na ominięcie błędów generowanych przez SQLiteStudio 3.1.1 z braku warunku „Unique”
Nader Belal