3

最初の行の個々の値ごとに 2 番目の列が自動インクリメントされるように、2 行の主キーを定義しようとしています。

たとえば、次のようになります。

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

テーブルに同じ数が 2 回以上ある場合、自動インクリメントはできません。私はあなたが何をしたいのか知っていますが、オートインクリメントではできません。

ただし、
create table t (x text not null, y integer not null) primary key (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 に答える