ios - SQLite - 外键约束 - IOs 5

标签 ios sqlite key

SQLite 似乎从 3.6.x 版本开始支持外键约束。 IOS5.0上SQLite的版本是3.7.7(在sqlite3.h中找到)。

但是当我尝试在具有约束的表中插入一行时,即使相关的外键不存在,我的行也会正确插入。我没有错误。

使用 Navicat 等应用程序执行相同的插入语句会出现“约束违规错误”

你知道 IOs 5 是否支持外键吗?

这是数据库架构:

CREATE TABLE artist(
  artistid    INTEGER PRIMARY KEY, 
  artistname  TEXT
)

CREATE TABLE "track" (
     "trackid" INTEGER PRIMARY KEY AUTOINCREMENT,
     "trackname" TEXT,
     "trackartist" INTEGER,
    CONSTRAINT "trackartist" FOREIGN KEY ("trackartist") REFERENCES "artist" ("artistid") ON DELETE CASCADE ON UPDATE CASCADE)

真的很简单,不是吗?

谢谢 伊曼纽尔

最佳答案

默认情况下禁用外键。您必须为每个连接分别启用它们。该设置不是“粘性”的。每次连接到 SQLite 数据库时都必须执行此操作。

PRAGMA foreign_keys = ON;

很有可能 Navicat 会为你处理这些事情。在您自己的代码中,这是您的工作。

关于ios - SQLite - 外键约束 - IOs 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8745850/

相关文章:

ios - Live 中的应用内购买收据验证崩溃

android - 在 SQLite 中连接表后缺少值

scala - Scala 中的多键映射

JavaScript 使用 String 作为对象键的参数

mysql - SQL:指定的键太长

ios - 如何在尺寸类更改期间从自定义演示 Controller 过渡到模态?

ios - 如何从照片库 IOS 7 返回主视图 Controller

ios - 代码 : add build phase is disabled

SQLite:将表从一个数据库复制到另一个数据库的最简单方法?

android - cursor.moveToNext() 抛出 CursorWindowAllocationException