web-dev-qa-db-ja.com

整数列SQLiteのデフォルト値を設定します

AndroidでSQLiteデータベースを作成しています。

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(ゼロ)に設定することは可能ですか?もしそうなら、正しいコードはどうあるべきか。

102
Born Again

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

208
Karakuri

デフォルト値を持つ列:

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

<DefaultValue>は以下のプレースホルダーです:

  • 値リテラル
  • ()

例:

Count INTEGER DEFAULT 0,
LastSeen TEXT DEFAULT (datetime('now'))
5
Hi I'm Frogatto

コーディングを学び始めたばかりで、SQLiteで質問したのと同じようなものが必要でした([SQLiteStudio](3.1.1)を使用しています)。

列の「制約」を「Not Null 'その後、'Default ''制約 'または動作しません(これがSQLiteであるかプログラム要件であるかはわかりません)。

私が使用したコードは次のとおりです。

CREATE TABLE <MY_TABLE> (
<MY_TABLE_KEY>       INTEGER    UNIQUE
                                PRIMARY KEY,
<MY_TABLE_SERIAL>    TEXT       DEFAULT (<MY_VALUE>) 
                                NOT NULL
<THE_REST_COLUMNS>
);
2
Nader Belal