使用sqlite pragma语句配置数据库?

时间:2011-04-10 15:46:45

标签: sqlite

我在项目中执行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,默认情况下关闭外键,但没有省略外键或省略触发器定义。我知道我需要定义触发器来强制执行外键约束。虽然我确实想知道为什么。

1 个答案:

答案 0 :(得分:3)

foreign_keys pragma设置会话变量;它不是数据库架构的一部分。对于每个“连接”,它默认为关闭,如果要打开它,则需要为每个连接打开它。