SQLite的主键自动增量不起作用

哈默德·莫米尼

我试图有一个带有自动递增主键的表。包含用于创建表的SQL查询。
问题是自动增量不起作用。意思是当我插入一行为NULL的值时,conversation_id它只是插入null我在多个表上都有这个问题。

-- Table: conversations
CREATE TABLE conversations (
    conversation_id INTEGER (64) PRIMARY KEY
                                 UNIQUE,
    target_id       BIGINT (64),
    sender_id       BIGINT (64),
    status          STRING (16)  NOT NULL
                                 DEFAULT unseen,
    is_group        INTEGER (1)  NOT NULL
                                 DEFAULT (0),
    last_update     INTEGER (32) DEFAULT (0),
    target_name     STRING (64),
    target_photo    STRING (256),
    unread_count    INTEGER (10) DEFAULT (0),
    last_message    STRING (256) 
);

以下是我用于插入表的方法:

public Conversation addConversation(Conversation conversation) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues row = new ContentValues();

        row.put("target_id", conversation.getTargetID());
        row.put("sender_id", conversation.getSenderID());
        row.put("target_name", conversation.getTargetName());
        row.put("target_photo", conversation.getTargetPhoto());
        row.put("status", conversation.getStatus());
        row.put("unread_count", conversation.getUnreadCount());
        row.put("last_message", conversation.getLastMessage());

        conversation.setConversationID(db.insert(TBL_CONVERSATIONS, null, row));
        Log.d(TAG, "conversation added: "+conversation.getConversationID());

        db.close();

        return conversation;
    }

奇怪的是,当我从insert方法中检索插入ID时,它返回正确的值,但实际的数据库字段为null。

如果我正确理解A column declared INTEGER PRIMARY KEY will autoincrement. [引用]

虚拟主机

从文档:

使用CREATE TABLE AS创建的表没有PRIMARY KEY,也没有任何类型的约束。每列的默认值为NULL。

您不必UNIQUE在具有PRIMARY KEY约束的COLUMN上添加约束。
解释:

UNIQUE约束与PRIMARY KEY约束相似,除了单个表可以具有任意数量的UNIQUE约束。

而是添加NOT NULL这就是为什么:

根据SQL标准,PRIMARY KEY应该始终暗示NOT NULL。不幸的是,由于某些早期版本中的错误,SQLite并非如此。除非该列是INTEGER PRIMARY KEY或表是WITHOUT ROWID表或将该列声明为NOT NULL,否则SQLite允许在PRIMARY KEY列中使用NULL值。可以修复SQLite使其符合标准,但是这样做可能会破坏旧版应用程序。因此,决定仅记录SQLite在大多数PRIMARY KEY列中允许NULL的事实。


我建议使用此列定义:

CREATE TABLE conversations (
    conversation_id INTEGER PRIMARY KEY NOT NULL AUTOINCREMENT,
...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MongoDB 自动增量不起作用

来自分类Dev

Django CharField主键不起作用,自动创建rowid主键

来自分类Dev

自动增量在Android SQLite数据库中不起作用

来自分类Dev

增量不起作用

来自分类Dev

PHP Doctrine DBAL Schema自动增量不起作用

来自分类Dev

Redshift Copy和自动增量功能不起作用

来自分类Dev

Postgresql自动增量在Ubuntu中不起作用

来自分类Dev

Mysql自动增量在插入多行时不起作用

来自分类Dev

自动增量不起作用 PostgreSQL - Java EE APP

来自分类Dev

SQLite Java多列主键不起作用

来自分类Dev

MySQL主键不起作用?

来自分类Dev

如何在SQLite中创建自动增量主键

来自分类Dev

在回滚后,sqlite重复主键自动增量值

来自分类Dev

Python - 没有自动增量主键值的 Sqlite 插入元组

来自分类Dev

Android中的整数主键自动增加功能不起作用

来自分类Dev

我的自动增量功能不起作用,我有10位数字的长度

来自分类Dev

MySQL Workbench-更改下一个自动增量值不起作用

来自分类Dev

我的自动增量功能不起作用,我有10位数字的长度

来自分类Dev

使用Javascript的会话中的自动增量功能不起作用

来自分类Dev

由于“识别”不起作用,如何在这些表中添加自动增量 Id?

来自分类Dev

使用主键的Laravel查询不起作用

来自分类Dev

增量按钮在magento中不起作用

来自分类Dev

Arduino:简单的增量不起作用

来自分类Dev

ANGULAR中的增量数不起作用

来自分类Dev

对于步骤不起作用的循环增量

来自分类Dev

增量按钮在magento中不起作用

来自分类Dev

为什么计算增量不起作用?

来自分类Dev

ANGULAR中的增量数不起作用

来自分类Dev

LINQ 增量值不起作用

Related 相关文章

热门标签

归档