SQLite にはいくつかの機能がない。
たとえば、次の通り。
- alter table rename columnがない
- alter table drop column がない
SQLiteでの alter colmunの代替案
- いったん別のテーブルにデータを退避する
- drop table でテーブルを消す
- create table でテーブルを作り直す
- 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 まわりはちょっとハマりますね