SQLite:双主键和自动增量

时间:2013-04-24 19:06:27

标签: 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收到错误,说我在“autoincrement”附近有错误。我能做什么? (即使是一个值为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');

谢谢,

杰森波西特

2 个答案:

答案 0 :(得分:1)

如果您的桌子中有两次或更多次相同的号码,则无法自动增量。我知道你想做什么,但不能用自动增量来完成。

但是你可以这样         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

答案 1 :(得分:0)

你不能从sqlite做到这一点。你需要的是从上层开始,这是你的程序。伪代码就像:

char current_symbol='A';
int count=0;
for(loop all your data)
{
    if(current_symbol == same text)
    {
      count++;    
    }
    else
    {
      current_symbol = same text;
      count=1;
    }

    insert into t (x,y) values ('A', count);
}