2013-07-12 5 views
85

私はアンドロイドでSQLiteデータベースを作成しています。整数列のデフォルト値を設定するSQLite

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

0(ゼロ)であるために作成されたすべての行のための(整数)KEY_NOTEのデフォルト値を設定することが可能ですか?もしそうなら、正しいコードは何でしょうか。

答えて

179

このリンクは便利です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);"); 

SQLiteのキーワードを使用します:http://www.sqlite.org/lang_createtable.html

1

デフォルト値を持つ列:

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

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

  • 値リテラル
  • (表現)

例:

Count INTEGER DEFAULT 0, 
LastSeen TEXT DEFAULT (datetime('now')) 
1

私がちょうどコーディング学ぶために始めているとあなただけのSQLiteに求めていると私は似て必要なことが起こる(I´m using [SQLiteStudio] (3.1.1))。

あなたが定義しなければならないということが起こるの列の「Constraint」「nullでない」を「Constraint」またはそれが動作しません(私はドン」「をデフォルト」を使用して、ご希望の定義を入力としてこれが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を使用できません。 NOT NULLを宣言せずにNULL値の列にデフォルトを指定すると、デフォルトのNULL値が挿入されたときに混乱することがあります。 – Chosun

関連する問題