1

sqlite3 データベースでいくつかのALTER TABLEステートメントを実行したいと思います。ALTER TABLE の実行中にユーザーがプロセスを強制終了したり、電源が切られたりするとどうなりますか? データベースは破損した中間状態のままになりますか?

4

1 に答える 1

2

ドキュメントのトランザクションページから:

SQLite の 1 つのトランザクション内のすべての変更は、ディスクへの変更の書き込みが中断された場合でも、完全に発生するか、まったく発生しないかのいずれかです。

* a program crash,
* an operating system crash, or
* a power failure.

ドキュメントの別のページから:

データベースを変更するコマンド (基本的には、SELECT 以外の SQL コマンド) は、トランザクションがまだ有効になっていない場合、自動的にトランザクションを開始します。最後のクエリが終了すると、自動的に開始されたトランザクションがコミットされます。

それらを組み合わせると、答えはノーです。停電時にデータベースが破損することはありません。

于 2010-03-21T00:44:37.263 に答える