SQLite Managerの[構造]ページで[列の編集]コマンドを使用してテーブルの列定義(主キー列ではない)を修正すると、sqlite3はそのテーブル名をsqlite_sequenceテーブルから削除したようです。手動で追加し直そうとしましたが、失われたテーブルに追加してもseq番号が更新されないことがわかりました。
失われたテーブル名を元に戻す方法を知っている人はいますか?
SQLite Managerの[構造]ページで[列の編集]コマンドを使用してテーブルの列定義(主キー列ではない)を修正すると、sqlite3はそのテーブル名をsqlite_sequenceテーブルから削除したようです。手動で追加し直そうとしましたが、失われたテーブルに追加してもseq番号が更新されないことがわかりました。
失われたテーブル名を元に戻す方法を知っている人はいますか?
sqlite_sequenceのドキュメントには次のように書かれています。
AUTOINCREMENTテーブルのsqlite_sequence.seq値が手動で整数以外に設定され、その後AUTOINCREMENTテーブルを挿入または更新しようとした場合、動作は未定義です。
でも:
AUTOINCREMENTテーブルが更新されたときにAUTOINCREMENTテーブルのsqlite_sequence行が存在しない場合は、新しいsqlite_sequence行が作成されます。
したがって、sqlite_sequenceに「fake」エントリを追加しないでください。ただし、存在する場合は変更できます。