2013-07-12 64 views
85

我正在android中創建一個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

使用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

具有默認值的列:

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」爲「非空」然後輸入使用「默認」「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,所以設置一個默認值會暗示該列是不可空的。如果您在可空列上指定默認值而未聲明它爲NOT NULL,則在插入默認NULL值時可能會使您感到困惑。 – Chosun