SQLite:pragma语句是否通过回滚事务而撤消?

SQLite:pragma语句是否通过回滚事务而撤消?,sqlite,transactions,pragma,Sqlite,Transactions,Pragma,只是想知道,如果在回滚的事务中包含诸如foreign_keys=OFF和VACUUM之类的杂注,是否会撤消 在线文档似乎没有涵盖这一点……文档没有涵盖一般交易内部发布的pragma语句的情况,但它确实涵盖了以下主题(可能还有其他主题): 该pragma是事务中的no op;外键约束 只有在没有挂起的情况下才能启用或禁用强制 开始或保存点 VACUUM不是一个术语,它包含以下交易: 如果存在未结交易或存在未结交易,真空将失败 运行时,一个或多个活动SQL语句 不同的pragma语句是不同的 例如,

只是想知道,如果在回滚的事务中包含诸如foreign_keys=OFF和VACUUM之类的杂注,是否会撤消


在线文档似乎没有涵盖这一点……

文档没有涵盖一般交易内部发布的pragma语句的情况,但它确实涵盖了以下主题(可能还有其他主题):

该pragma是事务中的no op;外键约束 只有在没有挂起的情况下才能启用或禁用强制 开始或保存点

VACUUM不是一个术语,它包含以下交易:

如果存在未结交易或存在未结交易,真空将失败 运行时,一个或多个活动SQL语句


不同的pragma语句是不同的

例如,SQLite版本3.7.15.2在事务中包含pragma“user_version”,并将提交和回滚该值

但是,同一版本的SQLite专门从事务中排除(在文档和测试中)外键

从我有限的抽样中可以看出,在事务期间未记录为无效的杂注(外键)将参与事务(如用户版本)


PS:我意识到这是一个非常古老的问题,但当我需要这些信息时,谷歌就是在这里向我提出的。

我可以验证至少以下PRAGMA在交易中无效:

PRAGMA journal_mode=WAL;
如果尝试,您将收到以下错误消息:

SQL逻辑错误:无法从事务内更改为wal模式


出于好奇,您是否找到了这方面的参考资料,或者这仅仅是从sqlite命令行界面上尝试某个版本的参考资料?本文档和测试的结合。文档列出了许多pragma事务交互,但没有列出所有这些交互。