Кажется, что внешние ограничения ключей поддерживаются с версии 3.6.x в SQLite. Версия SQLite на IOS5.0 - 3.7.7 (находится в sqlite3.h).SQLite - Внешние ключи - IOS 5
Но когда я пытаюсь вставить строку в таблицу с ограничением, моя строка правильно вставлена, даже если соответствующий внешний ключ не существует. У меня нет ошибки.
Выполнение же оператора вставки с помощью приложения, такие как Navicat дает мне «Constraint ошибку нарушения»
вы знаете, если внешние ключи поддерживаются прошивкой 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)
Очень просто, не так ли?
Благодаря Эммануэль
Можете ли вы опубликовать код, в который вы вставляете Таблица? – Eric
Привет, я использую FMDatabase, код очень прост: [db executeUpdate: @ "вставить в дорожки (дорожки, дорожки) значения (?,?)", @ "новый трек", [Номер NSNumberWithInt: i ]] – ecaste
Weird ... У меня есть тот же самый сценарий, что и вы ... (Navicat, iOS, FMDB). Тот же вопрос. Должен любить ТАК. – walkingbrad