-1

重複の可能性:
sqlite の ALTER COLUMN

アップグレード中に列のデータ型を変更したいと考えています。列のデータ型を変更する方法。

Alter table Alter column ステートメントを使用すると、構文エラーが発生しますか?

4

2 に答える 2

1

できません。SQLiteのALTERTABLEはかなり制限されています。

ここに画像の説明を入力してください

したがって、ALTER TABLEを使用してテーブルの名前を変更するか、新しい列を1つ追加することができます。良い面として(少なくともあなたにとっては)、SQLiteの「タイプ」の概念はかなり緩く、列を定義した方法よりも、何かを使用する方法に大きく依存します。例えば:

sqlite> create table t (i int);
sqlite> insert into t (i) values (11);
sqlite> insert into t (i) values ('pancakes');
sqlite> select * from t;
i
11
pancakes

したがって、任意のタイプのデータを他のタイプの列に入れることができます。

ただし、テーブルのデータをネイティブタイプに変換する方法を決定するためにテーブルのスキーマをチェックするツールを使用している場合は、ALTER TABLEALTERCOLUMNをシミュレートする必要があります。AFAIK、それを行う唯一の方法は醜い方法です:

  1. 探しているスキーマを持つ新しいテーブルを作成します。
  2. 古いテーブルから新しいテーブルにすべてをコピーします。
  3. 元のテーブルを削除します。
  4. ALTER TABLE RENAMEを使用して、新しい正しいテーブルの名前を元の名前に変更します。

私はそれを醜い方法で行い、SQLiteの緩い型システムを無視します。整数として宣言されている列を見つけた場合'pancakes'、私は少し戸惑い、責任者に厳しい言葉をかけるでしょう。

于 2012-11-21T07:14:37.617 に答える
0

このページに記載されているとおり

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

ALTER TABLE ALTER COLUMNSqliteは構文をサポートしていません。

私が見ているように、列の値を別の場所に保存し、新しい列を追加し、保存された値を新しい列に書き換えてから、古い列を削除する必要があります。

于 2012-11-21T07:14:31.457 に答える