【问题标题】:Set default value of an integer column in SQLite在 SQLite 中设置整数列的默认值
【发布时间】:2013-07-11 03:43:39
【问题描述】:

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

【问题讨论】:

    标签: database sqlite


    【解决方案1】:

    碰巧我刚刚开始学习编码,我需要与您刚刚在 SQLite (I´m using [SQLiteStudio] (3.1.1)) 中询问的类似的东西。

    碰巧您必须将列的 'Constraint' 定义为 'Not Null' 然后使用 'Default 输入所需的定义' '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>
    );
    

    【讨论】:

    • 与 MySQL 中使用的逻辑相同;可空列的默认值已经为 NULL,因此设置默认值否则将意味着该列不可为空。如果您在可空列上指定默认值而不将其声明为 NOT NULL,则在插入默认 NULL 值时可能会使您感到困惑。
    • UNIQUE 语句不是必需的,PRIMARY KEY 语句已经暗示了。
    • @dani 我同意你的看法,但这是绕过 SQLiteStudio 3.1.1 因缺少“唯一”条件而产生的错误的唯一方法
    【解决方案2】:

    具有默认值的列:

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

    &lt;DefaultValue&gt; 是一个占位符:

    • 值文字
    • ( 表达式)

    例子:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2016-04-27
        • 1970-01-01
        • 2015-01-09
        • 1970-01-01
        • 1970-01-01
        • 2012-08-27
        • 2015-01-25
        • 2014-12-03
        • 1970-01-01
        相关资源
        最近更新 更多