我試圖設置一個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)'。 –