我在项目中执行foreign_key pragma语句时遇到问题。目前,我已将此内容写入该计划。
SQLiteStatement pragma = db.compileStatement("PRAGMA foreign_key = ON;");
pragma.execute;
这些语句在创建db之后执行,从那时起创建表,这些都可以正常工作。
问题是当我使用sqlite3调试db时,我在sqlite3中执行(pragma foreign_key;)语句,它总是显示foreign_keys已关闭,除非我在调试期间明确启用它。
所以我的问题是如何在我的应用程序中执行PRAGMA语句?
仅供参考,sqlite版本为3.6.22,默认情况下关闭外键,但没有省略外键或省略触发器定义。我知道我需要定义触发器来强制执行外键约束。虽然我确实想知道为什么。
答案 0 :(得分:3)
foreign_keys
pragma设置会话变量;它不是数据库架构的一部分。对于每个“连接”,它默认为关闭,如果要打开它,则需要为每个连接打开它。