当前位置:  开发笔记 > 编程语言 > 正文

外键未被强制执行

如何解决《外键未被强制执行》经验,为你挑选了1个好方法。

为什么SQLite没有强制执行以下外键约束(尽管执行正常)?我该如何处理强制关系?

CREATE TABLE User (
    UserID TEXT Unique NOT NULL PRIMARY KEY,
    FirstName TEXT NOT NULL,
    LastName TEXT NOT NULL,
    Username TEXT NOT NULL,
    Password TEXT NOT NULL,
    Email TEXT NOT NULL,
    SignupDate TEXT NOT NULL
)

CREATE TABLE Category (
    CategoryID TEXT Unique NOT NULL PRIMARY KEY,
    UserID TEXT,
    FOREIGN KEY(UserID) REFERENCES User(UserID)
)

Alex Martell.. 18

正如相关文档所述(在第2节中启用外键支持):

假设在使用外键约束的情况下编译库,应用程序必须在运行时使用PRAGMA foreign_keys命令启用它.例如:

sqlite> PRAGMA foreign_keys = ON;

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

PRAGMA在相关的连接中使用过它吗?(假设,正如文档所说,sqlite被正确编译,当然也是最近提供外键约束实施的版本).



1> Alex Martell..:

正如相关文档所述(在第2节中启用外键支持):

假设在使用外键约束的情况下编译库,应用程序必须在运行时使用PRAGMA foreign_keys命令启用它.例如:

sqlite> PRAGMA foreign_keys = ON;

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

PRAGMA在相关的连接中使用过它吗?(假设,正如文档所说,sqlite被正确编译,当然也是最近提供外键约束实施的版本).

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有