Sqlite外键不起作用

时间:2017-07-26 20:07:20

标签: 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 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

2 个答案:

答案 0 :(得分:1)

s之后删除key - 如果您输入错误而SQlite不会发回任何内容,SQlite将不会发出警告。

答案 1 :(得分:0)

语法为PRAGMA foreign_key_list(table-name);