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/