在 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(一个整数) ?如果是,正确的代码应该是什么?

180550 次浏览

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

具有默认值的列:

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

<DefaultValue>是一个占位符,表示:

  • 字面值
  • 表达 (

例子:

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

碰巧我刚刚开始学习编码,我需要一些类似的东西,正如您刚才在 SQLite (我正在使用[ SQLiteStudio ](3.1.1) )中所要求的那样。

碰巧,您必须将列的“ Rel = “ nofollow noReferrer”> Constraint ”定义为“ 不是空”,然后使用“ 默认”“ Rel = “ nofollow noReferrer”> 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>
);