SQLite:双主键和自动增量

标签 sqlite android-sqlite

我正在尝试定义一个两行主键,这样 第二列为每个人自动递增 第一行的值。

例如我们会:

X Y
A 1
A 2
A 3
A 4
A 5
B 1
B 2
B 3
C 1
D 1
E 1
E 2

我想做一个:

create table t (x text, y integer autoincrement) primary key (x, y);

但是我从 SQLite 得到一个错误,说我在“自动增量”附近有一个错误。我能做什么? (只要我能让它工作,即使是整数值 x 也可以)。

然后我想通过以下方式获得上述值:

insert into t (x) values ('A');
insert into t (x) values ('A');
insert into t (x) values ('A');
insert into t (x) values ('A');
insert into t (x) values ('A');
insert into t (x) values ('B');
insert into t (x) values ('B');
insert into t (x) values ('B');
insert into t (x) values ('C');
insert into t (x) values ('D');
insert into t (x) values ('E');
insert into t (x) values ('E');

谢谢,

贾森·波西特

最佳答案

如果你的表中有相同的数字两次或更多次,你就不能自动递增。我知道你想做什么,但它不能用自动增量来完成。

但是你可以这样
create table t (x text not null, y integer not null) primary key (x, y);

另见:sqlite: multi-column primary key with an auto increment column

关于SQLite:双主键和自动增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16200202/

相关文章:

java - 什么时候会抛出 SQLiteOutOfMemoryException

java - 无法从数据库获取上下文和访问架构

database - Sqlite 给列的大小超过了需要

android - 错误:不是语句(查询)

python - 如何检查我的 sqlite 列是否不在我的数据框中?

android - 如何检查联系人是否存在于数据库android中

android - 在 Android 中删除整个数据库 onUpgrade?

java - 通过 ID 更新多行

ios - db executeUpdate... 在 FMDB block 中并且没有结束,没有错误

sql - 如何在 sqlite3 的 WHERE 子句中添加多个 "NOT LIKE ' %?%'?