似乎SQLite中版本3.6.x以來支持外鍵約束。 IOS5.0上的SQLite版本是3.7.7(在sqlite3.h中找到)。SQLite - 外鍵約束 - IO 5
但是,當我嘗試在具有約束的表中插入一行時,即使相關的外鍵不存在,也可以正確插入我的行。我沒有錯誤。
否則使用應用程序,如Navicat的給了我一個「約束違規錯誤」
你知道,如果外鍵的支持iOS 5同樣的INSERT語句?
下面是數據庫模式:
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)
真正簡單,不是嗎?
感謝 靈光
你可以發佈代碼插入到哪裏嗎?表? – Eric 2012-01-05 16:21:42
嗨,我使用FMDatabase,代碼非常簡單:[db executeUpdate:@「insert into track(trackname,trackartist)values(?,?)」, @「new track」, [NSNumber numberWithInt:i ]] – ecaste 2012-01-05 16:24:51
奇怪...我有和你一樣的場景......(Navicat,iOS,FMDB)。同樣的問題。得到愛是如此。 – walkingbrad 2013-05-18 21:56:12