SQLiteで外字キー設定する
普段は外字キー(FK)は ALTER TABLE 文で適用してたけど、SQLite だと ALTER TABLE 文が使えなくて、直接 CREATE TABLE 文に埋め込むのが正しいらしい。
FK制約を設定する場合、こんな感じに CREATE TABLE 文を書く。
CREATE TABLE album(
albumartist TEXT,
albumname TEXT,
albumcover BINARY,
PRIMARY KEY(albumartist, albumname)
);CREATE TABLE song(
4.1. Composite Foreign Key Constraints
songid INTEGER,
songartist TEXT,
songalbum TEXT,
songname TEXT,
FOREIGN KEY(songartist, songalbum) REFERENCES album(albumartist, albumname)
);
必要なら ON DELETE CASCADE なんかも使える。 詳しくは 4.3. ON DELETE and ON UPDATE Actions を参照するといいよ。
ちなみに SQLite はデフォルトで FK は無視される。有効にする場合、次のコマンドを実行する必要がある。忘れないようにね。:-)
sqlite> PRAGMA foreign_keys = ON;
有効かどうかを知りたい場合は、こんな感じ。
sqlite> PRAGMA foreign_keys;
2. Enabling Foreign Key Support
0
sqlite> PRAGMA foreign_keys = ON;
sqlite> PRAGMA foreign_keys;
1
sqlite> PRAGMA foreign_keys = OFF;
sqlite> PRAGMA foreign_keys;
0
その他、いろいろ載ってるから、詳しくは SQLite Foreign Key Support を見ましょ :-)