首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不存在的外键不会导致SQLite中的错误

不存在的外键不会导致SQLite中的错误
EN

Stack Overflow用户
提问于 2019-05-30 01:33:42
回答 1查看 0关注 0票数 0

以下代码应该IMO产生错误,因为user_id=1它不存在。它为什么有效?

代码语言:javascript
复制
CREATE TABLE users (
user_id int PRIMARY KEY,
email text UNIQUE
);

CREATE TABLE claimed (
account_id int PRIMARY KEY,
user_id int,
domain text,
FOREIGN KEY (user_id) REFERENCES users (user_id)
);

INSERT INTO claimed
(user_id, domain)
VALUES (1, "abcd");
EN

回答 1

Stack Overflow用户

发布于 2019-05-30 10:57:13

相关文件

为了SQLite中使用外键约束,图书馆必须既没有被编译SQLITE_OMIT_FOREIGN_KEYSQLITE_OMIT_TRIGGER定义。如果SQLITE_OMIT_TRIGGER已定义但未定义SQLITE_OMIT_FOREIGN_KEY,则SQLite的行为与版本3.6.19(2009-10-14)之前的行为相同 - 解析外键定义并可使用查询PRAGMA foreign_key_list,但不强制执行外键约束。

和:

默认情况下禁用外键约束(为了向后兼容),因此必须为每个数据库连接单独启用。

和:

假设在启用外键约束的情况下编译库,应用程序仍然必须在运行时使用该PRAGMA foreign_keys命令启用它。例如: sqlite> PRAGMA foreign_keys = ON;

显然你应该PRAGMA foreign_keys = ON在连接的顶部使用,并且可能使用适当的选项进行重建(尽管如果你从包中安装,那么我个人会认为这已经完成)。

来源: Google sqlite foreign key,第一个结果

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档