今天我注意到我的SQLite表上的外键约束不起作用。阅读Stack Overflow后,我发现应该启用它。所以,我一直在寻找代码片段。到目前为止,我只能找到这个:
[self.db executeUpdate:@"PRAGMA foreign_keys=ON"];
但这对我来说似乎不起作用,因为编译器总是抱怨。我看到人们将此行用于FMDatabase
类型(我甚至不知道它是什么)。
那么,如果我打开这样的数据库连接,如何启用外键约束:
- (void) openDatabase
{
const char* databaseFile = [[self pathToDatabaseFile:@"readlater.sql"] UTF8String];
sqlite3 *connection;
if (sqlite3_open(databaseFile, &connection) != SQLITE_OK) {
return;
}
self.db = connection;
}
还是应该在创建表时完成? 谢谢。
答案 0 :(得分:4)
当您直接使用SQLite C API时,您还必须使用C函数来执行SQL命令:
sqlite3_exec(connection, "PRAGMA foreign_keys = on", NULL, NULL, NULL);