Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite和外键:文档don';不要失败_Sqlite - Fatal编程技术网

SQLite和外键:文档don';不要失败

SQLite和外键:文档don';不要失败,sqlite,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> PRA

我正在从中查看示例,并尝试复制它们。这就是我得到的

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)没有失败,至少在创建表时没有失败。然而,文件暗示它应该。我错过了什么?

上面写着:

如果数据库架构包含需要查看多个表定义才能识别的外键错误,则在创建表时不会检测到这些错误。相反,此类错误会阻止应用程序准备SQL语句,这些SQL语句以使用外键的方式修改子表或父表的内容

您认为“需要查看多个表定义才能识别的外键错误”是什么?哪些外键错误不需要查看多个表?