从SQLite版本3.6.x开始,似乎支持外键约束.IOS5.0上的SQLite版本是3.7.7(在sqlite3.h中找到).
但是当我尝试在具有约束的表中插入行时,即使相关的外键不存在,我的行也会正确插入.我没有错误.
使用像Navicat这样的应用程序执行相同的插入语句给我一个"约束违规错误"
你知道IO 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)
Run Code Online (Sandbox Code Playgroud)
真的很简单,不是吗?
谢谢Emmanuel
Mik*_*ll' 13
默认情况下禁用外键.您必须为每个连接单独启用它们.该设置不是"粘性".每次连接到SQLite数据库时都必须这样做.
PRAGMA foreign_keys = ON;
Run Code Online (Sandbox Code Playgroud)
Navicat可以为您解决这个问题.在你自己的代码中,这是你的工作.