我用外键读取所有以前的问题。我做了所有可能的配置,但我无法执行它的工作。 即使我在类型表中没有任何记录,我也可以插入到节点表中。但据我所知,外键约束不应该允许这种情况发生。Sqlite外键不起作用
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) <> '')
)
和
CREATE TABLE "types"
("id" INTEGER PRIMARY KEY NOT NULL ,
"name" TEXT NOT NULL)
的SQLite 3.19.3
sqlite> PRAGMA foreign_keys;
foreign_keys
------------
1
sqlite> PRAGMA foreign_keys_list;
sqlite>
我不知道为什么PRAGMA foreign_keys_list
答案是空的。
,因为我在命令中使用s
纠正解决:PRAGMA foreign_key_list(nodes)
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
谷歌搜索'sqlite杂注外键列表'是什么让你? – philipxy
它应该显示我的外键,但结果是空的。我在我的节点表中定义外键。 – AEF
我的错误,我误读。 – philipxy