1. ホーム

[解決済み] [Solved] SQLiteデータベースのテーブルのカラム名を変更するには?

2022-03-27 22:52:13

質問

SQLiteデータベースのいくつかのテーブルで、いくつかのカラムの名前を変更する必要があります。 私は 類題 は以前stackoverflowで質問されたことがありますが、それはSQL全般に関するもので、SQLiteのケースは言及されていませんでした。

のSQLiteのドキュメントから ALTER TABLE このようなことは簡単にはできないようです(つまり、1つのALTER TABLE文)。

SQLiteでそのようなことをする一般的なSQLの方法を知っている人がいるのかと思っていました。

どのように解決するのですか?

で修正したところです。 2018-09-15 (3.25.0)

<ブロッククオート

を強化しました。 ALTER TABLE コマンドを使用します。

  • を使用して、テーブル内のカラム名を変更できるようにした。 ALTER TABLE テーブル RENAME COLUMN oldname TO newname .
  • テーブル名の変更機能を修正し、トリガーとビューで変更されたテーブルへの参照も更新されるようにしました。

新しい構文については、以下のドキュメントを参照してください。 ALTER TABLE

RENAME COLUMN TO 構文は、テーブル table-name の column-name を new-column-name に変更します。列名は、テーブル定義自体、および、その列を参照する全てのインデックス、トリガ、ビューの両方で変更されます。もし、列名の変更がトリガやビューの中で意味的にあいまいになるのであれば、その時は RENAME COLUMN はエラーとなり、変更は適用されません。

画像の出典はこちら https://www.sqlite.org/images/syntax/alter-table-stmt.gif

CREATE TABLE tab AS SELECT 1 AS c;

SELECT * FROM tab;

ALTER TABLE tab RENAME COLUMN c to c_new;

SELECT * FROM tab;

db-fiddle.com デモ


Android対応

執筆時点では AndroidのAPI 27は、SQLiteパッケージのバージョン3.19を使用しています。 .

Android が現在使用しているバージョンと、このアップデートが SQLite のバージョン 3.25.0 で行われることから、このサポートが Android に追加されるまでには、少し時間がかかると思われます(API 33 程度)。

また、その場合でも、API 33より古いバージョンに対応する必要がある場合は、これを使用することはできません。