【问题标题】:Foreign Key constraint doesn't work外键约束不起作用
【发布时间】:2012-02-24 15:24:57
【问题描述】:

我有两个表格,themequiz,这是它们的定义:

    CREATE TABLE "theme" ("id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , "nom" VARCHAR NOT NULL );

CREATE TABLE quiz(

     id              INTEGER PRIMARY KEY,
     nom         VARCHAR(256) NOT NULL,
     theme      INTEGER NOT NULL,
     niveau      INTEGER NOT NULL,
     pass          INTEGER DEFAULT 1  NOT NULL,
     jok            INTEGER DEFAULT 1 NOT NULL,
    etat            INTEGER DEFAULT 0 NOT NULL,
    FOREIGN KEY (theme) REFERENCES theme(id)
);

theme 表中的字段id(主键)是quiz 表中的Foreign Key。 当我尝试在包含值 30 作为外键的表测验中插入一条记录时,该记录已成功插入到 quiz 表中,尽管主题表中没有带有 id = 30 的记录,我意思是,不应该阻止这个插入,因为我有一个外键约束?

【问题讨论】:

  • 你用的是哪个版本的sqlite?

标签: sqlite sqlitemanager


【解决方案1】:

您确定foreign key support 已启用吗?

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

sqlite> PRAGMA foreign_keys = ON;

【讨论】:

  • 你救我,我必须启用它:PRAGMA foreign_keys = ON;
  • 对于那些正在寻找如何启用外键支持的人,您需要将 ConnectionString 更改为“data source=C:\Dbs\myDb.db;foreign keys=true;” (将 C:\Dbs\myDb.db 替换为您的 sqlite 数据库)。对于原始帖子:stackoverflow.com/questions/4254371/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-22
  • 2019-07-15
  • 1970-01-01
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多