SQLiteが2026年10月9日に公開した3.54.0では、対話型のコマンドラインツールであるCLIのプロンプトが拡張された。入力待ちの表示でデータベース名と開いているトランザクションの状態を確認でき、入力が未完了の場合は、終えるために必要な文字も表示される。
従来の固定プロンプトであるsqlite>と ...>には、現在のデータベースやトランザクションの状態は表示されなかった。トランザクションとは、複数の処理をまとめて確定(コミット)または取り消す単位であり、開いているとは、そのまとまりがまだ完了していない状態を指す。新機能はSQLの動作を変えるのではなく、入力する場所でこうした状態を示すことに重点を置いている。
ファイル名とトランザクション状態の表示規則
プロンプト文字列には、現在の状態に応じて内容が変わるエスケープコードを組み込める。開始文字はバックスラッシュではなく、スラッシュ/だ。/fはパスを除いたデータベースのファイル名を表示し、メモリデータベースの場合はmemoryと表示する。
/xの後のテキストは、トランザクションが開いているときだけ表示される。/:の後には、そうでない場合のテキストを置き、/;で条件付きの区間を終える。このため、色を使わずにアスタリスクなどの文字で開いているトランザクションを区別できる。
SQLITE_PS2は、セミコロンの欠落などで入力が未完了のときに使われる継続入力プロンプトだ。ここでのみ機能する/Cは、現在のコマンドを閉じて基本プロンプトに戻るために必要な最小限の文字列を示す。文字の入力を代行したり、コマンドを実行したりはしない。
起動時の環境変数と.promptによる表示変更
起動時に環境変数SQLITE_PS1とSQLITE_PS2があれば、それぞれ基本プロンプトと継続入力プロンプトのコンパイル時の既定値より優先される。実行中は、.promptに文字列を2つ渡して両方を変更するか、1つだけ渡して基本プロンプトのみを変更できる。
色は.prompt --no-color、または空でないNO_COLOR環境変数で無効にできる。ただし、色だけでトランザクションを区別する設定では、色を無効にするとその区別も失われる。実際の表示は、ユーザー設定やコンパイル時の既定値によって異なる。
この説明は、公式リリースノートとプロンプトの文書に基づく。プロンプトの文書にある2026年10月5日という日付は最終更新日であり、リリース日とは異なる。実行ファイルを動かした結果や使い勝手への効果を測定した結果ではないため、ミスの減少や作業速度の向上を示す根拠にはならない。
/xが示すのは、トランザクションが開いているという状態だ。コミットの成功やデータの永続的な保存を保証しない。/Cも入力を終えるためのヒントであり、意図に合ったSQLかどうかを検証する機能ではない。
この機能の対象は、SQLite 3.54.0以降のCLIだ。古い実行ファイルやGUIツール、SQLiteライブラリを組み込んだアプリケーションでも同じ表示が提供されるとは限らない。
現在の設定と色を使わない表示の確認
SQLite 3.54.0 CLIの対話型セッションでは、次のコマンドで現在のプロンプト文字列を確認し、色を無効にできる。読者が実行して確認するための手順であり、すべての状態遷移を検証する試験ではない。
.prompt --show
.prompt --no-color実務で確認するポイントは、色の華やかさよりも、現在の設定がどの状態を示すかにある。色を無効にすることと、アスタリスクなどの状態表示を残すことは別々の設定だ。そのため、プロンプト文字列の確認は、見た目だけでなく、どの情報が残るかを確かめる出発点になる。
SQLite 3.54.0のプロンプトは現在の状態と入力の終わりをより分かりやすく示すが、SQLの正しさやトランザクションの成功を保証する仕組みではない。
