何时在 sqlite 上使用编译指示?

发布于 2024-09-02 06:18:23 字数 44 浏览 5 评论 0原文

何时使用编译指示?

第一次创建数据库时或每次连接数据库时?

When the pragmas are used?

When the database is created for first time or in each connection to database?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤独难免 2024-09-09 06:18:23

这取决于所使用的编译指示。来自SQLite 权威指南数据库配置

许多编译指示都有临时形式和永久形式。临时表单在其生命周期内仅影响当前会话。永久表单存储在数据库中并影响每个会话。

或者,用您的问题的话来说:每次连接数据库时都使用临时表单,第一次创建数据库时使用永久表单

pragma 文档 没有明确指定 pragma 是临时还是永久。然而,它通常会说类似的话

在创建任何表之前必须打开自动清理功能。创建表后无法启用或禁用自动清理。

意思是 auto_vacuum 是一个永久的编译指示,或者

当您使用cache_size pragma更改缓存大小时,更改仅在当前会话期间有效。

意思是 cache_size 是一个临时的。

因此,回答您的问题的最佳方法是仔细阅读特定编译指示的文档。或者,您可以研究 pragma 源代码(搜索 ** PRAGMA [,区分大小写)。

this depends on the pragma being used. from The definitive guide to SQLite, Database Configuration:

Many pragmas have both temporary and permanent forms. Temporary forms affect only the current session for the duration of its lifetime. The permanent forms are stored in the database and affect every session.

or, in the words of your question: Temporary forms are used in each connection to database, permanent forms are used when the database is created for the first time.

the pragma documentation doesn't explicitly specify if a pragma is temporary or permanent. however, it usually says something like

auto-vacuuming must be turned on before any tables are created. It is not possible to enable or disable auto-vacuum after a table has been created.

meaning auto_vacuum is a permanent pragma, or

When you change the cache size using the cache_size pragma, the change only endures for the current session.

meaning cache_size is a temporary one.

so your best bet to answer your question is to carefully read the documentation for your specific pragma. alternatively, you can study the pragma source code (search for ** PRAGMA [, case sensitive).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文