【发布时间】:2012-02-03 11:24:03
【问题描述】:
似乎从 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)
真的很简单,不是吗?
谢谢 伊曼纽尔
【问题讨论】:
-
你能把你要插入表格的代码贴出来吗?
-
嗨,我用的是FMDatabase,代码很简单:[db executeUpdate:@"insert into track (trackname,trackartist) values (?,?)" , @"new track", [NSNumber numberWithInt:i]]
-
奇怪...我和你有完全相同的场景...(Navicat,iOS,FMDB)。同样的问题。一定很喜欢。