SQLite 3.53.0 新增 ALTER TABLE 约束与 JSON 函数支持
Simon Willison··作者 Simon Willison
关键信息
QRF 库用 C 语言编写,可编译为 WebAssembly;它能改善固定宽度终端上的查询结果格式化,并可通过 TCL 接口访问,使查询输出更易读。
资讯摘要
SQLite 3.53.0 是一个重大版本更新,解决了长期存在的模式修改限制。现在可以通过 ALTER TABLE 添加或移除 NOT NULL 和 CHECK 约束—���此前需要手动绕过。新增的 json_array_insert() 等 JSON 函数扩展了 SQLite 直接在查询中操作 JSON 数据的能力。
此外,引入了查询结果格式化库(QRF),显著提升了命令行环境下结果的可读性,尤其是在终端上显示时。作者还展示了如何将 QRF 编译为 WebAssembly,创建了一个交互式测试平台来体验其格式化效果。这一发布体现了 SQLite 持续向更友好、功能更强的方向演进。
资讯正文
<p><strong><a href="https://sqlite.org/releaselog/3_53_0.html">SQLite 3.53.0</a></strong></p>
SQLite 3.52.0 已被撤销,因此这是一个包含大量用户可见和内部改进的较大版本。其中一些亮点如下:</p>
<ul>
<li><code>ALTER TABLE</code> 现在可以添加和移除 <code>NOT NULL</code> 和 <code>CHECK</code> 约束 —— 我之前曾使用自己的 <a href="https://sqlite-utils.datasette.io/en/stable/python-api.html#changing-not-null-status">sqlite-utils transform() 方法</a> 来实现这一功能。</li>
<li>新增了 <a href="https://sqlite.org/json1.html#jarrayins">json_array_insert() 函数</a> 及其对应的 <code>jsonb</code> 版本。</li>
<li>对 <a href="https://sqlite.org/climode.html">命令行界面(CLI)模式</a> 进行了显著改进,包括结果格式化功能。</li>
</ul>
<p>这些结果格式化的改进来自一个新库: <a href="https://sqlite.org/src/file/ext/qrf">Query Results Formatter</a>。我用手机上的 Claude Code(代码助手)将其编译为 WebAssembly,并构建了 <a href="https://tools.simonwillison.net/sqlite-qrf">这个交互式演示界面</a>,方便大家尝试该功能。</p>
来源与参考
收录于 2026-04-12