3

我正在尝试定义一个两行主键,以便第二列针对第一行的每个单独值自动递增。

例如我们会有:

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');

谢谢,

杰森·波西特

4

2 回答 2

1

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

但是您可以
创建表 t (x text not null, y integer not null) 主键 (x, y);

另请参阅:sqlite:具有自动增量列的多列主键

于 2013-04-24T21:12:18.630 回答
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);
}
于 2013-04-24T21:31:06.187 回答