それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

SQLiteでの alter colmunの代替案

SQLite にはいくつかの機能がない。

たとえば、次の通り。

  • alter table rename columnがない
  • alter table drop column がない

SQLiteでの alter colmunの代替案

  1. いったん別のテーブルにデータを退避する
  2. drop table でテーブルを消す
  3. create table でテーブルを作り直す
  4. select / into で退避データを投入する

いったん別のテーブルにデータを退避する。

方法は2つある。一つは、テーブルを別名にする。もう一つは、create table as select でテーブルをコピーする

ALTER TABLE my_table RENAME TO my_table;
create table my_temp as select * from movie_info;

create table select from でコピーすると、SQLiteのデフォルトなTextメインのカラムになるので細かいConstrainsや型情報やdefault / unique が消える可能性がある。

drop table で消す

drop table my_table;

create table で作り直す

create table my_table  (  .... ) ;

insert select する。

insert into my_table select * from my_temp;

Alter table と column まわりはちょっとハマりますね