我不明白为什么会收到错误,你能解释一下吗?
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
答案 0 :(得分: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插入中的值。
答案 1 :(得分:2)
表a ..
中没有名为text
的字段
你可能打算这样做:
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");
答案 2 :(得分:1)
您可能会收到此错误,因为您尚未在table a
中声明主键。此外,在引用中您必须提及主键列名称而非数据类型。
例如
sqlite> create table a (id text PRIMARY KEY, val text);
// ^---Declared Primary key
sqlite> create table b (bid text, ref text, foreign key(ref) references a(text));
refer primary key column--------^