我正在尝试定义一个两行主键 第二列是每个人自动增量的 第一行的值。
例如我们会:
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');
谢谢,
杰森波西特答案 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);
}