如何使用Objective C在SQLITE中启用外键约束

时间:2014-06-20 14:16:41

标签: ios objective-c sqlite foreign-keys

今天我注意到我的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;
}

还是应该在创建表时完成? 谢谢。

1 个答案:

答案 0 :(得分:4)

当您直接使用SQLite C API时,您还必须使用C函数来执行SQL命令:

sqlite3_exec(connection, "PRAGMA foreign_keys = on", NULL, NULL, NULL);