例如
Table1
id|v1|v2|v3
1 |10|20|30
2 |20|30|40
3 |30|40|50
Table2
id |a|b|c
100|2|1|1
200|1|3|2
300|3|2|2
Table2.a,b和c应该是Table1.id的外键。
如果我尝试:
CREATE Table2(
id, a, b, c,
FOREIGN KEY(a, b, c) REFERENCES Table1(id));
我得到:“错误:外键中的列数与引用表中的列数不匹配”
如果我这样做
CREATE Table2(
id,
a REFERENCES(id),
b REFERENCES(id),
c REFERENCES(id));
我得到:“错误:靠近”id“:语法错误”
答案 0 :(得分:3)
正确的语法更像是这样:
CREATE TABLE Table2 (
id int,
a int,
b int,
c int,
FOREIGN KEY(a) REFERENCES Table1(id),
FOREIGN KEY(b) REFERENCES Table1(id),
FOREIGN KEY(c) REFERENCES Table1(id)
);
答案 1 :(得分:1)
你是第二次尝试不远,你刚刚错过了引用的表名。对于单列外键,内联(和未命名)FK约束定义更紧凑,而对于复合FK,您必须在表的末尾指定FK。
C:\Users\DDevienne>sqlite3
SQLite version 3.8.3.1 2014-02-11 14:52:19
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table t1 (id primary key);
sqlite> create table t2 (
...> id primary key,
...> a references t1(id),
...> b references t1(id),
...> c references t1(id)
...> );
sqlite>