133

我正在创建一个 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(零)?如果是这样,正确的代码应该是什么?

4

3 回答 3

260

Use the SQLite keyword 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);");

This link is useful: http://www.sqlite.org/lang_createtable.html

于 2013-07-12T14:46:44.067 回答
9

具有默认值的列:

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

<DefaultValue>是 a 的占位符:

  • 值字面量
  • (表达)

例子:

Count INTEGER DEFAULT 0,
LastSeen TEXT DEFAULT (datetime('now'))
于 2017-05-08T09:08:31.467 回答
5

碰巧我刚刚开始学习编码,并且我需要与您刚刚在 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>
);
于 2017-11-21T14:03:55.290 回答