0

エラーが発生する理由がわかりません。説明してもらえますか?

sqlite> create table a (id text, val text);
sqlite> create table b (bid text, ref text, foreign key(ref) references a(text));
sqlite> insert into a values("1", "one");
sqlite> insert into b values("1", "one");
Error: foreign key mismatch
4

3 に答える 3

4

ここで少し奇妙なことがたくさんあると思います。これを次のように書きます。

create table a (id text, val text, primary key(id));
create table b (bid text, ref text, foreign key (ref) references a(id));
insert into a values("1", "one");
insert into b values("one", "1");

A で主キーを作成し、B から参照します。外部キーのデータ型ではなくフィールド名を参照しているわけではありません。

不一致は、「一致」しようとしているためoneです1. Bインサートの値を丸めたはずです。

SQL フィドル

于 2013-08-22T12:32:46.367 に答える
2

textテーブル a. で呼び出されるフィールドがありません。

あなたはおそらく次のことをするつもりでした:

sqlite> create table a (id text, val text primary key(id));
sqlite> create table b (bid text, ref text, foreign key(ref) references a(val));
sqlite> insert into a values("1", "one");
sqlite> insert into b values("1", "one");
于 2013-08-22T12:32:22.673 に答える