1

SQLite3は、主キーを指定しない場合、テーブルごとにrowidと呼ばれるデフォルトの主キーを提供します。ただし、これに依存することにはいくつかの欠点があるようです。

VACUUMコマンドは、明示的なINTEGERPRIMARYKEYを持たないテーブルのエントリのROWIDを変更する場合があります。

http://www.sqlite.org/lang_vacuum.html

暗黙のROWIDではなく明示的な主キーを使用するように既存のSQLite3データベースを変更したいので、必要に応じてバキュームを実行できます。データベース全体を再構築せずにこれを行うことはできますか?

4

1 に答える 1

1

データベース全体を再構築する必要はありません。ただし、SQLite は ALTER TABLE ステートメントをサポートしていないため、次のことを行う必要があります。

  1. 正しいスキーマで一時テーブルを作成する
  2. 元のテーブルのすべてのデータを一時テーブルにコピーします
  3. 元のテーブルを削除する
  4. 一時テーブルの名前を変更する

これを行うには、 SQLitemanなどのアプリを使用することをお勧めします。

于 2010-01-15T05:14:52.057 に答える