Sqlite外键不起作用

Sqlite外键不起作用,sqlite,foreign-keys,Sqlite,Foreign Keys,我用外键阅读了所有以前的问题。我做了所有可能的配置,但我不能强制它工作。 即使类型表中没有任何记录,我也可以插入节点表。但正如我所知,外键约束不应允许这种情况发生 CREATE TABLE nodes( id int NOT NULL PRIMARY KEY , ver int NOT NULL, lock int NOT NULL, title varchar(50) NOT NULL, typeid int NOT NULL REFERENCES types(id), desc text N

我用外键阅读了所有以前的问题。我做了所有可能的配置,但我不能强制它工作。 即使类型表中没有任何记录,我也可以插入节点表。但正如我所知,外键约束不应允许这种情况发生

CREATE TABLE nodes(
id int NOT NULL PRIMARY KEY ,
ver int NOT NULL,
lock int NOT NULL,
title varchar(50) NOT NULL,
typeid int NOT NULL REFERENCES types(id),
desc text NOT NULL,
CHECK(trim(id) <> '' AND trim(ver) <> '' AND trim(lock) <>'' AND trim(title) 
<> '' AND trim(typeid) <> '' AND trim(desc) <> '' )
)
SQLite 3.19.3

sqlite> PRAGMA foreign_keys;
foreign_keys
------------
1

sqlite> PRAGMA foreign_keys_list;
sqlite>
我不知道为什么PRAGMA外键列表的答案是空的

它被解决了,因为我在命令中使用了s 更正:PRAGMA-foreign\u-key\u-listnodes


语法为PRAGMA foreign_key_listtable-name

删除键后的内容-如果您输入了错别字,SQlite不会警告您,只是不返回任何内容。

谷歌搜索“SQlite pragma外键列表”得到了什么?它应该会显示外键,但结果是空的。我在我的节点表中定义了外键。我的错误,我读错了。我再次修复了您的代码/表格式,请在保存之前查看格式化版本。不能在注释中设置表格格式。但无论如何,请在你的回答中澄清。另外,如果你有新问题,请在新的帖子中提问。用谷歌搜索你的错误信息。别忘了,我也查过了。结果是空的。我认为它应该为PRAGMA foreign_key_listnodes显示一些东西;你是对的。但为什么我可以在节点表中插入任何内容,即使在类型表中没有任何数据?这是我的问题。为什么我没有得到任何错误?
sqlite> PRAGMA foreign_keys;
foreign_keys
------------
1

sqlite> PRAGMA foreign_keys_list;
sqlite>
sqlite> PRAGMA foreign_key_list(nodes);
id          seq         table       from        to          on_update   on_delete   match
----------  ----------  ----------  ----------  ----------  ----------  --------    ------------
0           0           types       typeid      id          NO ACTION   NO ACTION   NONE