私はfoo
とbar
のSQLite3データベースを設定しようとしており、それらの間に多対多の関係があります。これは私が今までに持っているものです: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)'も必要とします。 –