0
私はhttps://sqlite.org/foreignkeys.htmlの例を見て、それらを再現しようとしています。これは私が得るものです。SQLiteと外部キー:ドキュメントの悪い例が失敗しない
SQLite version 3.11.1 2016-03-03 16:17:53
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> PRAGMA foreign_keys=ON;
sqlite> PRAGMA foreign_keys; -- check that it registered
1
sqlite> CREATE TABLE parent(a PRIMARY KEY, b UNIQUE, c, d, e, f);
sqlite> CREATE UNIQUE INDEX i1 ON parent(c, d);
sqlite> CREATE INDEX i2 ON parent(e);
sqlite> CREATE UNIQUE INDEX i3 ON parent(f COLLATE nocase);
sqlite> CREATE TABLE child1(f, g REFERENCES parent(a));
sqlite> CREATE TABLE child2(h, i REFERENCES parent(b));
sqlite> CREATE TABLE child3(j, k, FOREIGN KEY(j, k) REFERENCES parent(c, d));
sqlite> CREATE TABLE child4(l, m REFERENCES parent(e)); -- Error?
sqlite> CREATE TABLE child5(n, o REFERENCES parent(f)); -- Error?
sqlite> CREATE TABLE child6(p, q, FOREIGN KEY(p, q) REFERENCES parent(b, c)); -- Error?
sqlite> CREATE TABLE child7(r REFERENCES parent(c)); -- Error?
sqlite> select * from sqlite_master where type='table';
table|parent|parent|2|CREATE TABLE parent(a PRIMARY KEY, b UNIQUE, c, d, e, f)
table|child1|child1|8|CREATE TABLE child1(f, g REFERENCES parent(a))
table|child2|child2|9|CREATE TABLE child2(h, i REFERENCES parent(b))
table|child3|child3|10|CREATE TABLE child3(j, k, FOREIGN KEY(j, k) REFERENCES parent(c, d))
table|child4|child4|11|CREATE TABLE child4(l, m REFERENCES parent(e))
table|child5|child5|12|CREATE TABLE child5(n, o REFERENCES parent(f))
table|child6|child6|13|CREATE TABLE child6(p, q, FOREIGN KEY(p, q) REFERENCES parent(b, c))
table|child7|child7|14|CREATE TABLE child7(r REFERENCES parent(c))
少なくとも、テーブル作成時に失敗する例(子4から7)はありません。しかし、ドキュメンテーションはそれがすべきことを暗示している。私は何が欠けていますか?
"識別するために複数のテーブル定義を調べる必要がある外部キーエラー"とは何でしょうか?複数のテーブルを参照する必要のない外部キーエラーは何でしょうか? – user1735003
'create table t(x参照xエラー);' –