我试图设置一个SQLite3数据库foo
s和bar
s和他们之间的多对多关系。这是我到目前为止:SQLite多对多的关系?
CREATE TABLE foo(
id INTEGER PRIMARY KEY NOT NULL,
foo_col INTEGER NOT NULL
);
CREATE TABLE bar(
id INTEGER PRIMARY KEY NOT NULL,
bar_col TEXT NOT NULL
);
CREATE TABLE foobar(
foo_id INTEGER,
bar_id INTEGER,
FOREIGN KEY(foo_id) REFERENCES foo(id) ON DELETE CASCADE,
FOREIGN KEY(bar_id) REFERENCES bar(id) ON DELETE CASCADE
);
CREATE INDEX fooindex ON foobar(foo_id);
CREATE INDEX tagindex ON foobar(tag_id);
...但它似乎并没有工作。我可以从foo
删除一行,但不会影响foobar
。我究竟做错了什么?
表foobar也可能需要(foo_id,bar_id)上的主键约束。但这是一个不同的问题。 –
@Catcall:随时评论我的帖子。 – wes
ace的答案,直接来自SQLite文档,是准确和完整的。但正如我所说,表foobar也需要'PRIMARY KEY(foo_id,bar_id)'。 –