问题:
两张表,一张中一个字段为另一张表的外键,但是插入引用表时外键的值在被引用表中不存在时,居然插入成功了。
原因:
在SQLite 3.x中,每次连接到SQLite数据库时都必须进行以下查询:
PRAGMA foreign_keys = ON;
否则,SQLite将忽略所有外键约束。
为什么每次?根据文档,向后兼容SQLite2.x 。
在SQLite 4.x中,默认情况下将启用 FK约束。
解决办法:
打开数据库后,立即执行打开外键约束的语句:
//连接数据库
//ret = sqlite3_open(dbPath, &m_db);
ret = sqlite3_open("d://my.db", &m_db);
if ( ret != SQLITE_OK )
{
return false;
}
sql = "PRAGMA foreign_keys = ON;";
execSql(sql);